From 792a97a27ec870dc11a643aa5ed519df1811054e Mon Sep 17 00:00:00 2001 From: marouault Date: Mon, 31 Jan 2022 20:43:30 +0100 Subject: [PATCH] Finished End game menu --- Pontu/include/engine/Colors.h | 2 +- Pontu/include/view/MenuEndGame.h | 2 +- Pontu/src/engine/Colors.c | 1 + Pontu/src/view/MenuEndGame.c | 24 ++++++++++++++++-------- Pontu/test/testMenuEndGame.c | 2 +- 5 files changed, 20 insertions(+), 11 deletions(-) diff --git a/Pontu/include/engine/Colors.h b/Pontu/include/engine/Colors.h index 16b3a36..d15dd7a 100644 --- a/Pontu/include/engine/Colors.h +++ b/Pontu/include/engine/Colors.h @@ -5,7 +5,7 @@ extern const SDL_Color COLOR_GENERIC_BUTTON_BACKGROUND; extern const SDL_Color COLOR_GENERIC_BUTTON_BORDER; - +extern const SDL_Color COLOR_GENERIC_BUTTON_BACKGROUND_HOVER; #endif diff --git a/Pontu/include/view/MenuEndGame.h b/Pontu/include/view/MenuEndGame.h index eb736a0..7cdc5f7 100644 --- a/Pontu/include/view/MenuEndGame.h +++ b/Pontu/include/view/MenuEndGame.h @@ -9,7 +9,7 @@ #include "engine/TextureLoader.h" #include "engine/GeneralState.h" -P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, const SDL_Rect* rect); +P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, const SDL_Rect* rect, GeneralState* state); void drawEndGameMenu(SDL_Renderer* renderer, const Player players[], const size_t nbPlayers, const SDL_Rect* rect, FontHandler* fontHandler); diff --git a/Pontu/src/engine/Colors.c b/Pontu/src/engine/Colors.c index e9f935e..1375ae6 100644 --- a/Pontu/src/engine/Colors.c +++ b/Pontu/src/engine/Colors.c @@ -2,3 +2,4 @@ const SDL_Color COLOR_GENERIC_BUTTON_BACKGROUND = {225, 225, 225, 255}; const SDL_Color COLOR_GENERIC_BUTTON_BORDER = {10, 10, 10, 255}; +const SDL_Color COLOR_GENERIC_BUTTON_BACKGROUND_HOVER = {250, 250, 250, 255}; diff --git a/Pontu/src/view/MenuEndGame.c b/Pontu/src/view/MenuEndGame.c index 8479b92..976b266 100644 --- a/Pontu/src/view/MenuEndGame.c +++ b/Pontu/src/view/MenuEndGame.c @@ -6,21 +6,31 @@ #include "engine/InputProcessor.h" -void nullFunc(P_Button* caller) { - +void setStateToMainMenu(P_Button* caller) { + *((GeneralState*)caller->arg) = GS_MainMenu; } -P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, const SDL_Rect* rect) { +P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, const SDL_Rect* rect, GeneralState* state) { int sizeX; int sizeY; SDL_Texture* texture = createGenericButtonTexture("Retour menu", font, 50, COLOR_GENERIC_BUTTON_BORDER, COLOR_GENERIC_BUTTON_BACKGROUND, 1, 4, &sizeX, &sizeY, renderer); - if (texture == NULL) { perror(SDL_GetError()); exit(errno); } - return createButton(texture, NULL, rect->x, rect->y, sizeX, sizeY, nullFunc); + SDL_Texture* textureHover = createGenericButtonTexture("Retour menu", font, 50, COLOR_GENERIC_BUTTON_BORDER, COLOR_GENERIC_BUTTON_BACKGROUND_HOVER, 4, 4, &sizeX, &sizeY, renderer); + if (textureHover == NULL) { + perror(SDL_GetError()); + exit(errno); + } + + + P_Button buttonMenuEndGame = createButton(texture, textureHover, rect->x, rect->y, sizeX, sizeY, &setStateToMainMenu); + buttonMenuEndGame.arg = state; + buttonMenuEndGame.rect.y = rect->h*8/10; + buttonMenuEndGame.rect.x = rect->x + rect->w/2-buttonMenuEndGame.rect.w/2; + return buttonMenuEndGame; } void drawTitle(SDL_Renderer* renderer, const SDL_Rect* rect, FontHandler* fontHandler) { @@ -117,10 +127,8 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r }; - array_P_Button_AddElement(&inputProcessor.tabButton, createButtonForEndGameMenu(renderer, fontHandler->fonts[FONT_retro], &rectMenuEndGame)); + array_P_Button_AddElement(&inputProcessor.tabButton, createButtonForEndGameMenu(renderer, fontHandler->fonts[FONT_retro], &rectMenuEndGame, generalState)); P_Button* buttonMenuEndGame = array_P_Button_Last(&inputProcessor.tabButton); - buttonMenuEndGame->rect.y = rectMenuEndGame.h*8/10; - buttonMenuEndGame->rect.x = rectMenuEndGame.x + rectMenuEndGame.w/2-buttonMenuEndGame->rect.w/2; drawEndGameMenu(renderer, players, nbPlayers, &rectMenuEndGame, fontHandler); diff --git a/Pontu/test/testMenuEndGame.c b/Pontu/test/testMenuEndGame.c index 99cd527..79bc552 100644 --- a/Pontu/test/testMenuEndGame.c +++ b/Pontu/test/testMenuEndGame.c @@ -8,7 +8,7 @@ void testMenuEndGame() { SDL_Window *window = NULL; - SDL_Rect windowSize = {10, 10, 600, 600}; + SDL_Rect windowSize = {10, 10, 1100, 600}; SDL_Renderer *renderer = NULL; if(0 != SDL_Init(SDL_INIT_VIDEO))