|
|
|
|
@ -6,27 +6,28 @@
|
|
|
|
|
#include "raylib.h"
|
|
|
|
|
#include "string.h"
|
|
|
|
|
|
|
|
|
|
Button * InitButton(Texture2D textures[3], Vector2 *position, char *text, int textLEN, int id){
|
|
|
|
|
Button * ButtonInitButton(Texture2D textures[4], 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->textures[3] = textures[3];
|
|
|
|
|
|
|
|
|
|
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->state = BUTTON_STATE_DEFAULT;
|
|
|
|
|
button->id = id;
|
|
|
|
|
|
|
|
|
|
return button;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ButtonExecuteButton(Button *button, Game *game){
|
|
|
|
|
button->state = 0;
|
|
|
|
|
button->state = BUTTON_STATE_DEFAULT;
|
|
|
|
|
switch(button->id){
|
|
|
|
|
case 0: // continue game
|
|
|
|
|
case BUTTON_ID_CONTINUE: // continue game
|
|
|
|
|
if(game->screen == SCREEN_PAUSE){
|
|
|
|
|
game->screen = SCREEN_GAME;
|
|
|
|
|
}
|
|
|
|
|
@ -35,49 +36,30 @@ void ButtonExecuteButton(Button *button, Game *game){
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void ButtonDrawButton(Button * button){
|
|
|
|
|
ButtonUpdateButtonState(button);
|
|
|
|
|
// erst Button Texture, dann Text zentriert drauf
|
|
|
|
|
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 &&
|
|
|
|
|
if(button->state == BUTTON_STATE_RELEASED){
|
|
|
|
|
// Wir verlassen den RELEASED State automatisch wenn wir den Code des Buttons ausführen, siehe ButtonExecuteButton
|
|
|
|
|
// So lange der Code nicht ausgeführt wurde bleiben wir im state damit er definitiv im nächsten Frame ausgeführt wird
|
|
|
|
|
return button->state;
|
|
|
|
|
}
|
|
|
|
|
else 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;
|
|
|
|
|
if(IsMouseButtonDown(MOUSE_BUTTON_LEFT)){
|
|
|
|
|
return button->state = BUTTON_STATE_PRESSED;
|
|
|
|
|
}
|
|
|
|
|
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;
|
|
|
|
|
else if(button->state == BUTTON_STATE_PRESSED){
|
|
|
|
|
return button->state = BUTTON_STATE_RELEASED;
|
|
|
|
|
}
|
|
|
|
|
return button->state = BUTTON_STATE_HOVERED;
|
|
|
|
|
}
|
|
|
|
|
return button->state = 0;
|
|
|
|
|
return button->state = BUTTON_STATE_DEFAULT;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|