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 773aa5b..97c4e87 100644 Binary files a/Pontu/rsrc/sfx/menu_sound_effect.wav and b/Pontu/rsrc/sfx/menu_sound_effect.wav differ 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: