#include "button.h" #include "../game.h" #include "screenIDs.h" #include "stdio.h" #include "stdlib.h" #include "raylib.h" #include "string.h" Button * InitButton(Texture2D textures[3], Vector2 *position, char *text, int textLEN, int id){ Button *button = malloc(sizeof(Button)); button->textures[0] = textures[0]; button->textures[1] = textures[1]; button->textures[2] = textures[2]; button->position = (Vector2){position->x, position->y}; button->centerPosition = (Vector2){position->x + textures[0].width/2, position->y + textures[0].height/2}; strncpy(button->text, text, textLEN); button->state = 0; button->id = id; return button; } void ButtonExecuteButton(Button *button, Game *game){ button->state = 0; switch(button->id){ case 0: // continue game if(game->screen == SCREEN_PAUSE){ game->screen = SCREEN_GAME; } break; } } void ButtonDrawButton(Button * button){ ButtonUpdateButtonState(button); DrawTexture(button->textures[button->state], button->position.x, button->position.y, WHITE); DrawText(button->text, button->centerPosition.x - MeasureText(button->text, BUTTON_FONT_SIZE)/2, button->centerPosition.y - BUTTON_FONT_SIZE/2, BUTTON_FONT_SIZE, BLACK); } int ButtonUpdateButtonState(Button * button){ if(GetMouseX() > button->position.x && GetMouseX() < button->position.x + button->textures[button->state].width && GetMouseY() > button->position.y && GetMouseY() < button->position.y + button->textures[button->state].height ){ if(IsMouseButtonPressed(MOUSE_BUTTON_LEFT)){ button->state = 2; return 2; } button->state = 1; return 1; } button->state = 0; return 0; } int ButtonIsButtonHovered(Button * button){ if(GetMouseX() > button->position.x && GetMouseX() < button->position.x + button->textures[0].width && GetMouseY() > button->position.y && GetMouseY() < button->position.y + button->textures[0].height ){ return button->state = 1; } return button->state = 0; } int ButtonIsButtonPressed(Button * button){ if(GetMouseX() > button->position.x && GetMouseX() < button->position.x + button->textures[0].width && GetMouseY() > button->position.y && GetMouseY() < button->position.y + button->textures[0].height ){ if(IsMouseButtonPressed(MOUSE_LEFT_BUTTON)){ return button->state = 2; } } return button->state = 0; }