From dec491cfbdf9a1f0fe9bbdd5d03a72ca5a9d65ca Mon Sep 17 00:00:00 2001 From: marouault Date: Mon, 31 Jan 2022 18:28:02 +0100 Subject: [PATCH] Advancing in endgamemenu loop --- Pontu/include/engine/FontUtils.h | 1 - Pontu/include/view/MenuEndGame.h | 3 ++ Pontu/src/engine/FontUtils.c | 1 + Pontu/src/view/MenuEndGame.c | 32 ++++++++++-------- Pontu/test/testMenuEndGame.c | 57 ++------------------------------ 5 files changed, 26 insertions(+), 68 deletions(-) diff --git a/Pontu/include/engine/FontUtils.h b/Pontu/include/engine/FontUtils.h index 2740e03..6b5fa52 100644 --- a/Pontu/include/engine/FontUtils.h +++ b/Pontu/include/engine/FontUtils.h @@ -2,7 +2,6 @@ #define FONT_UTILS_INCLUDED #include -#include int calculateStringPixelLenght(TTF_Font* font, char* str); diff --git a/Pontu/include/view/MenuEndGame.h b/Pontu/include/view/MenuEndGame.h index 0238045..eb736a0 100644 --- a/Pontu/include/view/MenuEndGame.h +++ b/Pontu/include/view/MenuEndGame.h @@ -13,4 +13,7 @@ P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, cons void drawEndGameMenu(SDL_Renderer* renderer, const Player players[], const size_t nbPlayers, const SDL_Rect* rect, FontHandler* fontHandler); +void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, FontHandler* fontHandler, const Player players[], const size_t nbPlayers); + + #endif // MENU_FIN_INCLUDED diff --git a/Pontu/src/engine/FontUtils.c b/Pontu/src/engine/FontUtils.c index ee6b8a1..6a3f49a 100644 --- a/Pontu/src/engine/FontUtils.c +++ b/Pontu/src/engine/FontUtils.c @@ -1,4 +1,5 @@ #include "engine/FontUtils.h" +#include int calculateStringPixelLenght(TTF_Font* font, char* str) { diff --git a/Pontu/src/view/MenuEndGame.c b/Pontu/src/view/MenuEndGame.c index 15c88f6..82fd619 100644 --- a/Pontu/src/view/MenuEndGame.c +++ b/Pontu/src/view/MenuEndGame.c @@ -27,7 +27,7 @@ void drawTitle(SDL_Renderer* renderer, const SDL_Rect* rect, FontHandler* fontHa SDL_Point pos = {rect->x+rect->w/2, rect->y+rect->h/100}; SDL_Color color = {0,0,0,0}; - TextLabel titre = createTextLabel("Scores", &pos, 2, &color, fontHandler->fonts[FONT_retro], renderer, POSX_CENTER, POSY_TOP); + TextLabel titre = createTextLabel("Scores", &pos, 4, &color, fontHandler->fonts[FONT_retro], renderer, POSX_CENTER, POSY_TOP); drawTextLabel(renderer, &titre); @@ -101,24 +101,30 @@ void drawEndGameMenu(SDL_Renderer* renderer, const Player players[], const size_ drawPlayersScores(renderer, players, nbPlayers, rect, fontHandler); } -void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, const Player players[], const size_t nbPlayers) { +void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, FontHandler* fontHandler, const Player players[], const size_t nbPlayers) { InputProcessor inputProcessor = createInputProcessor(); - //récupère le numéro de l'écran - SDL_DisplayMode current; - const int i = SDL_GetWindowDisplayIndex(window); - SDL_GetCurrentDisplayMode(i, ¤t); //retourne current, structure avec vrai valeurs de taille de fenêtre + int windowW; + int windowH; - SDL_Rect rectMenuEndGme = {.x=current.w/20, .y=0, .w=current.w*4/5, .h=current.h}; + SDL_GetWindowSize(window, &windowW, &windowH); + + SDL_Rect rectMenuEndGame = { + .x=windowW/10, + .y=0, + .w=windowW*80/100, + .h=windowH + }; - array_P_Button_AddElement(&inputProcessor.tabButton, createButtonForEndGameMenu(renderer, fontHandler.fonts[FONT_retro], &rectMenuEndGme)); + array_P_Button_AddElement(&inputProcessor.tabButton, createButtonForEndGameMenu(renderer, fontHandler->fonts[FONT_retro], &rectMenuEndGame)); 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; - SDL_Color color = {0,0,0,0}; - drawEndGameMenu(renderer, players, nbPlayers, &rectMenuEndGme, &fontHandler); - - while(!quit) + drawEndGameMenu(renderer, players, nbPlayers, &rectMenuEndGame, fontHandler); + + while(*generalState == GS_EndOfGameMenu) { { InputElement inputElement; @@ -130,7 +136,7 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r switch (inputElement.data.uiAction) { case UIAction_Quit: - quit = true; + *generalState = GS_MainMenu; break; case UIAction_Validate: break; diff --git a/Pontu/test/testMenuEndGame.c b/Pontu/test/testMenuEndGame.c index 1659eb6..99cd527 100644 --- a/Pontu/test/testMenuEndGame.c +++ b/Pontu/test/testMenuEndGame.c @@ -10,8 +10,6 @@ void testMenuEndGame() { SDL_Window *window = NULL; SDL_Rect windowSize = {10, 10, 600, 600}; SDL_Renderer *renderer = NULL; - SDL_Texture* picture; - int statut = EXIT_FAILURE; if(0 != SDL_Init(SDL_INIT_VIDEO)) { @@ -60,69 +58,20 @@ void testMenuEndGame() { goto Quit; } - bool quit = false; FontHandler fontHandler = loadFonts(); SDL_RenderPresent(renderer); - - - InputProcessor inputProcessor = createInputProcessor(); - - SDL_Rect rectMenuEndGme = {.x=20, .y=0, .w=300, .h=480}; - - - array_P_Button_AddElement(&inputProcessor.tabButton, createButtonForEndGameMenu(renderer, fontHandler.fonts[FONT_retro], &rectMenuEndGme)); - P_Button* buttonMenuEndGame = array_P_Button_Last(&inputProcessor.tabButton); + GeneralState generalState = GS_EndOfGameMenu; SDL_Color color = {0,0,0,0}; - Player players[] = {newPlayer("Bépo", color), newPlayer("Azerty", color)}; + Player players[2] = {newPlayer("Bépo", color), newPlayer("Azerty", color)}; players[0].eliminationTurn = 10; players[1].eliminationTurn = 10; players[0].rank = 1; players[1].rank = 2; - drawEndGameMenu(renderer, players, 2, &rectMenuEndGme, &fontHandler); - while(!quit) - { - { - InputElement inputElement; - while (InputType_None != (inputElement = proccessInput(&inputProcessor)).type) { - - switch (inputElement.type) - { - case InputType_ActivateUI: - switch (inputElement.data.uiAction) - { - case UIAction_Quit: - quit = true; - break; - case UIAction_Validate: - break; - case UIAction_Cancel: - break; - default: - break; - } - break; - case InputType_MoveGame: - - break; - case InputType_ClickGame: - - break; - case InputType_None: - default: - break; - } - } - } - - drawButtonOnRenderer(renderer, buttonMenuEndGame); - - SDL_RenderPresent(renderer); - SDL_Delay(50); - } + endGameMenu(&generalState, window, renderer, &fontHandler, players, 2); Quit: freeFonts(fontHandler);