From f7c25903a88e3a736d2190ba3e8f1e3e755d9c6b Mon Sep 17 00:00:00 2001 From: marouault Date: Sun, 13 Feb 2022 16:58:07 +0100 Subject: [PATCH] Started to integrate MenuInterface into GameMain + Cut menu_sound_effect.wav silence to make it end quicker so channels aren't overbooked --- Pontu/entryPoints/main.c | 2 +- Pontu/entryPoints/test.c | 8 ++++---- Pontu/include/view/GameInterface.h | 3 ++- Pontu/include/view/GameMain.h | 3 ++- Pontu/rsrc/sfx/menu_sound_effect.wav | Bin 454964 -> 12794 bytes Pontu/src/engine/TextLabel.c | 2 +- Pontu/src/view/GameInterface.c | 20 ++++++++++++++++++++ Pontu/src/view/GameMain.c | 13 ++++++++++++- Pontu/src/view/MenuEndGame.c | 23 +++++------------------ 9 files changed, 47 insertions(+), 27 deletions(-) diff --git a/Pontu/entryPoints/main.c b/Pontu/entryPoints/main.c index 063ea61..de9f73e 100644 --- a/Pontu/entryPoints/main.c +++ b/Pontu/entryPoints/main.c @@ -72,7 +72,7 @@ int main(int argc, char *argv[]) { }*/ generalState = GS_Game; - gameView(&generalState, window, renderer, players, nbPlayers); + gameView(&generalState, window, renderer, players, nbPlayers, &fontHandler); endGameMenu(&generalState, window, renderer, &fontHandler, players, nbPlayers); break; diff --git a/Pontu/entryPoints/test.c b/Pontu/entryPoints/test.c index 4b2780a..7735714 100644 --- a/Pontu/entryPoints/test.c +++ b/Pontu/entryPoints/test.c @@ -6,8 +6,8 @@ //#include "../test/testConnectionMenu.c" //#include "../test/testDrawMainMenu.c //#include "../test/testSettingsView.c" -#include "../test/testCreationMenu.c" -//#include "../test/testGameInterface.c" +//#include "../test/testCreationMenu.c" +#include "../test/testGameInterface.c" //#include "../test/testConnectionMenu.c" //#include "../test/testDrawMainMenu.c" //#include "../test/testSettingsView.c" @@ -26,10 +26,10 @@ int main(int argc, char *argv[]) { //testConnectionMenu(); //testMenuEndGame(); //testButton(); - //testGameInterface(); + testGameInterface(); //testConnectionMenu(); //testDrawMainMenu(); - testCreationMenu(); + //testCreationMenu(); //testSettingsView(); return 0; diff --git a/Pontu/include/view/GameInterface.h b/Pontu/include/view/GameInterface.h index 75f3d16..98a018a 100644 --- a/Pontu/include/view/GameInterface.h +++ b/Pontu/include/view/GameInterface.h @@ -11,7 +11,7 @@ #include #include "engine/Button.h" #include - +#include "engine/arrayButton.h" //move pion @@ -33,6 +33,7 @@ void drawButtons(SDL_Renderer* renderer,FontHandler fontHandler); //draw timer (bottom right corner) +struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHandler* fontHandler); #endif diff --git a/Pontu/include/view/GameMain.h b/Pontu/include/view/GameMain.h index c50182a..9576e5c 100644 --- a/Pontu/include/view/GameMain.h +++ b/Pontu/include/view/GameMain.h @@ -4,7 +4,8 @@ #include "engine/GeneralState.h" #include #include "model/Player.h" +#include "engine/FontLoader.h" -void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, Player players[], size_t nbPlayers); +void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, Player players[], size_t nbPlayers, FontHandler* fontHandler); #endif //GAME_MAIN_INCLUDED diff --git a/Pontu/rsrc/sfx/menu_sound_effect.wav b/Pontu/rsrc/sfx/menu_sound_effect.wav index 773aa5b8b86d38dae0e5483ec5c6e8806e46882f..97c4e872f1670bb53375dfc54468a5da177a33e5 100644 GIT binary patch literal 12794 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 kRSI9F(L~&p-EEr9^jI=Z2k{w&>WV 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 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEez zsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKn zfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L9 z3aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aEezsDKKnfC{L93aG%{ z7Z^Eo*pT{`-~MqIo6Y+F{3WOV{JOKv=4$>=+w%Y4qphBQu|r`z{Cu0|+CKl{a~=F} V|G8ErUmP{M@4(kf)~IH){Xbmpmw*5O diff --git a/Pontu/src/engine/TextLabel.c b/Pontu/src/engine/TextLabel.c index 0cf5c2e..a32edff 100644 --- a/Pontu/src/engine/TextLabel.c +++ b/Pontu/src/engine/TextLabel.c @@ -34,7 +34,7 @@ void copyTextIntoTextLabel(TextLabel* label, const char text[]) { TextLabel createUnsizedTextLabel(const char text[], const SDL_Color* color, TTF_Font* font, SDL_Renderer* renderer) { TextLabel label = { - .color = color, + .color = *color, .texture = NULL }; diff --git a/Pontu/src/view/GameInterface.c b/Pontu/src/view/GameInterface.c index 485d4da..fec635c 100644 --- a/Pontu/src/view/GameInterface.c +++ b/Pontu/src/view/GameInterface.c @@ -11,6 +11,26 @@ void action(P_Button* buttonCaller){ //changeButtonTexture(arg->buttonCaller,arg->texture); } +struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHandler* fontHandler) { + SDL_Color menuBorderColor= {0,0,255,255}; + SDL_Color menuBackgroundColor = {0,255,0,255}; + + int sizex=20,sizey=20; + + SDL_Texture *menuButtonTexture = createGenericButtonTexture("Menu", fontHandler->fonts[FONT_retro], 125, menuBorderColor,menuBorderColor,24,5,&sizex,&sizey,renderer); + SDL_Texture *menuButtonHoverTexture = createGenericButtonTexture("MenuHover", fontHandler->fonts[FONT_retro], 125, menuBorderColor,menuBackgroundColor,24,5,&sizex,&sizey,renderer); + + struct array_P_Button buttons = array_P_Button_Create(); + + // Menu + array_P_Button_AddElement(&buttons, createButton(menuButtonTexture, menuButtonHoverTexture,20,20,100,50,&action)); //top left corner (rectangle) + // Settings + array_P_Button_AddElement(&buttons, createButton(menuButtonTexture, menuButtonHoverTexture, 750,10,50,50,&action)); //top right corner (square or circle) + // Mute/Unmute + array_P_Button_AddElement(&buttons, createButton(menuButtonTexture, menuButtonHoverTexture, 825,10,50,50,&action)); //top right cornre (square or circle) + + return buttons; +} void drawButtons(SDL_Renderer* renderer, FontHandler fontHandler) { diff --git a/Pontu/src/view/GameMain.c b/Pontu/src/view/GameMain.c index 18e7505..9379667 100644 --- a/Pontu/src/view/GameMain.c +++ b/Pontu/src/view/GameMain.c @@ -9,6 +9,7 @@ #include "view/PiecesDrawer.h" #include "view/BoardDrawer.h" #include "view/GameDrawer.h" +#include "view/GameInterface.h" #include "engine/UIElementUtils.h" @@ -30,7 +31,7 @@ void redrawGameBoard(SDL_Renderer* renderer, const Player players[], const size_ } } -void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, Player players[], size_t nbPlayers) +void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, Player players[], size_t nbPlayers, FontHandler* fontHandler) { if (*generalState != GS_Game) { return; @@ -41,6 +42,7 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend Game game = newGame(nbPlayers, players); TextureHandler textureHandler = newTextureHandler(renderer); + inputProcessor.tabButton = createGameInterfaceButtons(renderer, fontHandler); SDL_Rect windowRect = {0,0,0,0}; SDL_GetWindowSize(window, &windowRect.w, &windowRect.h); @@ -49,7 +51,12 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend SDL_Rect boardRect = adaptPosToRect(&boardRPositionSpecifier, &windowRect); //Draw + SDL_SetRenderDrawColor(renderer, 50,10,10, SDL_ALPHA_OPAQUE); + SDL_RenderClear(renderer); redrawGameBoard(renderer, game.arrPlayers, game.nbPlayers, &textureHandler, &boardRect, &game.board); + for (size_t i=0; ifonts[FONT_retro]); drawPlayersScores(renderer, players, nbPlayers, rect, fontHandler->fonts[FONT_retro]); } @@ -173,7 +157,7 @@ struct endGameMenuTextLabel createLabels(SDL_Renderer* renderer, const Player pl array_TextLabel_AddElement(&labels.textLabels, createTitleLabel(renderer, fontHandler->fonts[FONT_retro])); array_PositionSpecifier_AddElement(&labels.positionSpecifiers, getTitleRect100(&array_TextLabel_Last(&labels.textLabels)->textZone)); - + // Lignes de score return labels; } @@ -200,6 +184,7 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r .w = 30, .h = 30*buttonMenuEndGame->rect.h/buttonMenuEndGame->rect.w }; + PositionSpecifier positionSpecifierButtonRetour = newPositionSpecifier(&base100, POSX_CENTER, POSY_BOTTOM, ASPECT_KEEP_H); drawEndGameMenu(renderer, players, nbPlayers, &rectMenuEndGame, fontHandler); struct endGameMenuTextLabel labels = createLabels(renderer, players, nbPlayers, fontHandler); @@ -245,7 +230,9 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r drawTextLabel(renderer, &labels.textLabels.elems[i]); } - //buttonMenuEndGame->rect = adaptPosToRect(&base100, &rectM, POSX_CENTER, POSY_BOTTOM, ASPECT_KEEP_W); + buttonMenuEndGame->rect = adaptPosToRect(&positionSpecifierButtonRetour, &rectM); + drawButtonOnRenderer(renderer, buttonMenuEndGame); + fprintf(stderr, "Resize\n"); fflush(stderr); } default: