From d427cefec6524fe9efd193ec9c87fe890adeeb39 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathis=20Rib=C3=A9mont?= Date: Mon, 28 Feb 2022 08:49:54 +0100 Subject: [PATCH 1/2] test delete bg bug for main menu --- Pontu/src/view/MainMenu.c | 1 - 1 file changed, 1 deletion(-) diff --git a/Pontu/src/view/MainMenu.c b/Pontu/src/view/MainMenu.c index 5585161..69169e3 100644 --- a/Pontu/src/view/MainMenu.c +++ b/Pontu/src/view/MainMenu.c @@ -65,7 +65,6 @@ P_Button* drawMainMenu(SDL_Renderer* renderer,const FontHandler fontHandler, uns SDL_SetRenderTarget(renderer,NULL); - SDL_RenderPresent(renderer); return buttons; } From c2d6e2b10edc1679866abaf03c5030ae70c035e6 Mon Sep 17 00:00:00 2001 From: jathomas2 Date: Mon, 28 Feb 2022 09:41:58 +0100 Subject: [PATCH 2/2] Add the muteSound's ButtonAction, which mute master volume in the game interface --- Pontu/entryPoints/main.c | 2 +- Pontu/include/engine/ButtonActions.h | 7 +- Pontu/include/view/GameInterface.h | 9 +- Pontu/include/view/GameMain.h | 3 +- Pontu/src/engine/ButtonActions.c | 7 ++ Pontu/src/view/GameInterface.c | 131 ++------------------------- Pontu/src/view/GameMain.c | 4 +- 7 files changed, 28 insertions(+), 135 deletions(-) diff --git a/Pontu/entryPoints/main.c b/Pontu/entryPoints/main.c index 94f8a73..5d8a985 100644 --- a/Pontu/entryPoints/main.c +++ b/Pontu/entryPoints/main.c @@ -86,7 +86,7 @@ int main(int argc, char *argv[]) { }*/ //generalState = GS_Game; - gameView(&generalState, window, renderer, players, nbPlayers, &fontHandler); + gameView(&generalState, window, renderer, players, nbPlayers, &fontHandler,audioHandler); //Pour tester le endGameMenu directement /* diff --git a/Pontu/include/engine/ButtonActions.h b/Pontu/include/engine/ButtonActions.h index a930d70..c078e40 100644 --- a/Pontu/include/engine/ButtonActions.h +++ b/Pontu/include/engine/ButtonActions.h @@ -10,9 +10,14 @@ void action_print(P_Button* caller); /** * @brief Button handle which set a generalState to GS_MainMenu - * * @param caller The button clicked */ void action_setStateToMainMenu(P_Button* caller); +/** + * @brief Button handle wich mute the sound + * @param caller The button clicked + */ +void action_muteSound(P_Button* caller); + #endif //BUTTON_ACTION_INCLUDED \ No newline at end of file diff --git a/Pontu/include/view/GameInterface.h b/Pontu/include/view/GameInterface.h index 61c6763..a989581 100644 --- a/Pontu/include/view/GameInterface.h +++ b/Pontu/include/view/GameInterface.h @@ -13,21 +13,16 @@ #include #include "engine/arrayButton.h" #include "engine/GeneralState.h" +#include "engine/AudioHandler.h" -/** - * \brief Draw different buttons on the game interface : menu, setting, sound, nbTurn, and timers - * param Renderer - */ -void drawButtons(SDL_Renderer* renderer,FontHandler fontHandler); - /** * \brief Create an array of P_Button for the game interface * \param renderer The renderer on which we create P_buttons * \param fontHandler The fontHandler to apply * \return an array of P_Button to draw on the renderer */ -struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHandler* fontHandler, GeneralState* generalState); +struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHandler* fontHandler, GeneralState* generalState, AudioHandler audioHandler); /** diff --git a/Pontu/include/view/GameMain.h b/Pontu/include/view/GameMain.h index 9576e5c..edd99b8 100644 --- a/Pontu/include/view/GameMain.h +++ b/Pontu/include/view/GameMain.h @@ -5,7 +5,8 @@ #include #include "model/Player.h" #include "engine/FontLoader.h" +#include "engine/AudioHandler.h" -void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, Player players[], size_t nbPlayers, FontHandler* fontHandler); +void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, Player players[], size_t nbPlayers, FontHandler* fontHandler, AudioHandler audioHandler); #endif //GAME_MAIN_INCLUDED diff --git a/Pontu/src/engine/ButtonActions.c b/Pontu/src/engine/ButtonActions.c index 5494a83..d4643bb 100644 --- a/Pontu/src/engine/ButtonActions.c +++ b/Pontu/src/engine/ButtonActions.c @@ -1,5 +1,6 @@ #include "engine/ButtonActions.h" #include "engine/GeneralState.h" +#include "engine/AudioHandler.h" void action_none(P_Button* caller) { @@ -14,3 +15,9 @@ void action_setStateToMainMenu(P_Button* caller) { *((GeneralState*)caller->arg) = GS_MainMenu; } + +void action_muteSound(P_Button* caller) +{ + //Mute sound -> Master Volume = 0 + changeMasterVol((AudioHandler*)caller->arg,0); +} \ No newline at end of file diff --git a/Pontu/src/view/GameInterface.c b/Pontu/src/view/GameInterface.c index 1908dea..014d581 100644 --- a/Pontu/src/view/GameInterface.c +++ b/Pontu/src/view/GameInterface.c @@ -7,7 +7,9 @@ #include #include -struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHandler* fontHandler, GeneralState* generalState) { + + +struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHandler* fontHandler, GeneralState* generalState, AudioHandler audioHandler) { SDL_Color menuBorderColor= {0,0,255,255}; SDL_Color menuBackgroundColor = {0,255,0,255}; //SDL_Color menuBackgroundColor = {0,0,255,255}; @@ -31,10 +33,13 @@ struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHan // Menu array_P_Button_AddElement(&buttons, createButton(menuButtonTexture, menuButtonHoverTexture,20,20,100,50,&action_setStateToMainMenu)); //top left corner (rectangle) array_P_Button_Last(&buttons)->arg = (void*)generalState; - // Settings + + // Settings array_P_Button_AddElement(&buttons, createButton(settingsButtonTexture, settingsButtonHoverTexture, 750,10,50,50,&action_print)); //top right corner (square or circle) + // Mute/Unmute - array_P_Button_AddElement(&buttons, createButton(muteButtonTexture, muteButtonHoverTexture, 825,10,50,50,&action_print)); //top right cornre (square or circle) + array_P_Button_AddElement(&buttons, createButton(muteButtonTexture, muteButtonHoverTexture, 825,10,50,50,&action_muteSound)); //top right cornre (square or circle) + //array_P_Button_Last(&buttons)->arg = (void*)audioHandler; return buttons; } @@ -68,123 +73,3 @@ struct array_TextLabel createGameInterfaceLabels(SDL_Renderer* renderer, FontHan } -void drawButtons(SDL_Renderer* renderer, FontHandler fontHandler) -{ - //DRAW MENU BUTTON (TOP RIGHT CORNER) - - SDL_bool quit = SDL_FALSE; - SDL_Event event; - - int sizex=20,sizey=20; - - /* - - if(TTF_Init() == -1) - { - fprintf(stderr, "Erreur d'inistialisation de TTF_Init : %s\n", TTF_GetError()); - exit(EXIT_FAILURE); - } - - - TTF_Font* retroFont = NULL; - - //load ttf - int fontSize = 100; - int size = fontSize*100/88; - retroFont=TTF_OpenFont("rsrc/font/retro/retro.TTF", size); - if(!retroFont) { - printf("TTF_OpenFont: %s\n", TTF_GetError()); - // handle error - } - */ - - - - - //FontHandler fontHandler=loadFonts(); - - //Menu Button's colors - SDL_Color menuBorderColor= {0,0,255,255}; - SDL_Color menuBackgroundColor = {0,255,0,255}; - - //Postion text label - SDL_Point positonNbTurnLabel = {.x=60, .y=800}; - SDL_Point positionTimeLablel = {.x=770, .y=800}; - - //Color labal - SDL_Color colorLabel = {0, 255, 0, 255}; - - //Position label - PositionX_Type positionX = POSX_CENTER; - PositionY_Type positionY = POSY_CENTER; - - - - //SDL_Texture *buttonTexture = createGenericButtonTexture("Menu", NULL, 125, menuBorderColor,menuBackgroundColor,24,5,&sizex,&sizey,renderer); - 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); - - //Buttons - P_Button menuButton = createButton(menuButtonTexture, menuButtonHoverTexture,20,20,100,50,&action_print); //top left corner (rectangle) - P_Button settingButton = createButton(menuButtonTexture, menuButtonHoverTexture, 750,10,50,50,&action_print); //top right corner (square or circle) - P_Button soundButton = createButton(menuButtonTexture, menuButtonHoverTexture, 825,10,50,50,&action_print); //top right cornre (square or circle) - - //Labels - TextLabel nbTurnLabel = createTextLabel("Turn : ",&positonNbTurnLabel,1,&colorLabel,fontHandler.fonts[FONT_retro],renderer,positionX,positionY); - TextLabel timeLabel = createTextLabel("Time : ",&positionTimeLablel,1,&colorLabel,fontHandler.fonts[FONT_retro],renderer,positionX,positionY); - - - - //bool drawButtonOnRenderer(SDL_Renderer* renderer, P_Button* button); - - //P_Button createButton(SDL_Texture* texture, SDL_Texture* hoverTexture ,const int coordx, const int coordy, const int sizex, const int sizey, void (*onClick)(P_ButtonArg* arg)); - - //Create Button Texture - //SDL_Texture* createGenericButtonTexture(char* text, TTF_Font* font, int fontSize, SDL_Color border_color, SDL_Color background_color,int thickness, int padding, int* sizex, int* sizey, SDL_Renderer* renderer); - - - SDL_Texture* violetTexture = SDL_CreateTexture(renderer, SDL_PIXELFORMAT_RGBA8888,SDL_TEXTUREACCESS_TARGET,20,20); - SDL_SetRenderDrawColor(renderer, 150,75,200,255); - SDL_SetRenderTarget(renderer, violetTexture); - //SDL_RenderFillRect(renderer, &buttonRect); - - SDL_SetRenderDrawColor(renderer,255,0,0,0); - SDL_SetRenderTarget(renderer, NULL); - - SDL_RenderClear(renderer); - - while(!quit) - { - while(SDL_PollEvent(&event)) - { - switch(event.type) - { - case SDL_QUIT: - quit = SDL_TRUE; - break; - case SDL_MOUSEBUTTONUP: - //if(isHover(&menuButton,event.button.x,event.button.y)) - if(isHover(&menuButton)) - menuButton.onClick(&menuButton); - break; - case SDL_MOUSEMOTION: - //on vérifie à chaque tour ou est la souris, drawButtonOnRenderer choisit la bonne texture à afficher - //isHover(&menuButton,event.motion.x,event.motion.y); - isHover(&menuButton); - break; - } - } - - drawButtonOnRenderer(renderer,&menuButton); - drawButtonOnRenderer(renderer,&settingButton); - drawButtonOnRenderer(renderer,&soundButton); - drawTextLabel(renderer,&nbTurnLabel); - drawTextLabel(renderer,&timeLabel); - SDL_RenderPresent(renderer); - - SDL_Delay(20); - } - - - -} \ No newline at end of file diff --git a/Pontu/src/view/GameMain.c b/Pontu/src/view/GameMain.c index 2162c09..a01c769 100644 --- a/Pontu/src/view/GameMain.c +++ b/Pontu/src/view/GameMain.c @@ -33,7 +33,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, FontHandler* fontHandler) +void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* renderer, Player players[], size_t nbPlayers, FontHandler* fontHandler, AudioHandler audioHandler) { if (*generalState != GS_Game) { return; @@ -44,7 +44,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, generalState); + inputProcessor.tabButton = createGameInterfaceButtons(renderer, fontHandler, generalState,audioHandler); struct array_TextLabel tabLabel = createGameInterfaceLabels(renderer,fontHandler);