From 7b455ae7180a5be0eb644a7ced8a6b51aa0d13b9 Mon Sep 17 00:00:00 2001 From: Allan POINT Date: Mon, 31 Jan 2022 11:56:47 +0100 Subject: [PATCH] Create CreationMenue view --- Pontu/entryPoints/test.c | 11 +-- Pontu/include/engine/Colors.h | 4 +- Pontu/include/view/GameCreationMenu.h | 5 ++ Pontu/src/engine/Colors.c | 4 ++ Pontu/src/view/GameCreationMenu.c | 68 +++++++++++++++++++ Pontu/test/testCreationMenu.c | 98 +++++++++++++++++++++++++++ 6 files changed, 184 insertions(+), 6 deletions(-) create mode 100644 Pontu/src/engine/Colors.c create mode 100644 Pontu/src/view/GameCreationMenu.c create mode 100644 Pontu/test/testCreationMenu.c diff --git a/Pontu/entryPoints/test.c b/Pontu/entryPoints/test.c index b3fcb56..a94649c 100644 --- a/Pontu/entryPoints/test.c +++ b/Pontu/entryPoints/test.c @@ -6,10 +6,12 @@ #include "../test/testTextInput.c" #include "../test/testConnectionMenu.c"*/ /*#include "../test/testMenuEndGame.c" -/*#include "../test/testGameInterface.c" -#include "../test/testConnectionMenu.c"*/ + #include "../test/testGameInterface.c" + #include "../test/testConnectionMenu.c"*/ //#include "../test/testDrawMainMenu.c -#include "../test/testSettingsView.c" +//#include "../test/testSettingsView.c" +#include "../test/testCreationMenu.c" + /* This file is meant to be modified (used only to called other tests functions) */ @@ -26,7 +28,8 @@ int main(int argc, char *argv[]) { //testGameInterface(); //testConnectionMenu(); //testDrawMainMenu(); - testSettingsView(); + //testSettingsView(); + testCreationMenu(); return 0; } diff --git a/Pontu/include/engine/Colors.h b/Pontu/include/engine/Colors.h index c659955..16b3a36 100644 --- a/Pontu/include/engine/Colors.h +++ b/Pontu/include/engine/Colors.h @@ -3,8 +3,8 @@ #include -const SDL_Color COLOR_GENERIC_BUTTON_BACKGROUND = {225, 225, 225, 255}; -const SDL_Color COLOR_GENERIC_BUTTON_BORDER = {10, 10, 10, 255}; +extern const SDL_Color COLOR_GENERIC_BUTTON_BACKGROUND; +extern const SDL_Color COLOR_GENERIC_BUTTON_BORDER; #endif diff --git a/Pontu/include/view/GameCreationMenu.h b/Pontu/include/view/GameCreationMenu.h index 3734cc9..6e5300a 100644 --- a/Pontu/include/view/GameCreationMenu.h +++ b/Pontu/include/view/GameCreationMenu.h @@ -1,4 +1,9 @@ #include #include +#include "engine/TextLabel.h" +#include "engine/Button.h" +#include "engine/TextureLoader.h" +#include "engine/Colors.h" +#include "engine/FontUtils.h" bool drawGameCreationMenu(SDL_Renderer* renderer, TTF_Font* font, int width, int height); diff --git a/Pontu/src/engine/Colors.c b/Pontu/src/engine/Colors.c new file mode 100644 index 0000000..e9f935e --- /dev/null +++ b/Pontu/src/engine/Colors.c @@ -0,0 +1,4 @@ +#include "engine/Colors.h" + +const SDL_Color COLOR_GENERIC_BUTTON_BACKGROUND = {225, 225, 225, 255}; +const SDL_Color COLOR_GENERIC_BUTTON_BORDER = {10, 10, 10, 255}; diff --git a/Pontu/src/view/GameCreationMenu.c b/Pontu/src/view/GameCreationMenu.c new file mode 100644 index 0000000..4cf9b85 --- /dev/null +++ b/Pontu/src/view/GameCreationMenu.c @@ -0,0 +1,68 @@ +#include "view/GameCreationMenu.h" + +bool drawGameCreationMenu(SDL_Renderer* renderer, TTF_Font* font, int width, int height) +{ + // TextLabel for "Nombre de joueur.euse.s" creation + SDL_Point nbJoueurLabelPos = {.x=width*0.05, .y=height*0.05}; + SDL_Color black = {0,0,0,255}; + SDL_Color white = {225, 255, 255, 255}; + TextLabel nbJoueurLabel = createTextLabel( + "Nombre de joueur.euse.s", + &nbJoueurLabelPos, + 1, + &white, + font, + renderer, + POSX_LEFT, + POSY_TOP + ); + + // Incrementation Btn creation + + P_Button incrementBtn = createButton(NULL, NULL, nbJoueurLabelPos.x+calculateStringPixelLenght(font, nbJoueurLabel.text)+32, nbJoueurLabelPos.y, 0, 0, NULL); + SDL_Texture* btnTexture = createGenericButtonTexture("+", font, 8,COLOR_GENERIC_BUTTON_BACKGROUND, COLOR_GENERIC_BUTTON_BORDER, 4, 8, &(incrementBtn.rect.w), &(incrementBtn.rect.h), renderer); + if(btnTexture == NULL) + { + fprintf(stderr, "WARNING: Can't create texture: %s\n", SDL_GetError()); + return false; + } + SDL_Texture* btnHoveredTexture = createGenericButtonTexture("+", font, 8, COLOR_GENERIC_BUTTON_BORDER, COLOR_GENERIC_BUTTON_BACKGROUND, 4, 8, &(incrementBtn.rect.w), &(incrementBtn.rect.h), renderer); + + if(btnHoveredTexture == NULL) + { + fprintf(stderr, "WARNING: Can't create hover texture: %s\n", SDL_GetError()); + return false; + } + incrementBtn.texture = btnTexture; + incrementBtn.hoverTexture = btnHoveredTexture; + + // Decrementation Btn creation + + P_Button decrementBtn = createButton(NULL, NULL, nbJoueurLabelPos.x+calculateStringPixelLenght(font, nbJoueurLabel.text)+32, nbJoueurLabelPos.y, 0, 0, NULL); + btnTexture = createGenericButtonTexture("-", font, 8,COLOR_GENERIC_BUTTON_BACKGROUND, COLOR_GENERIC_BUTTON_BORDER, 4, 8, &(decrementBtn.rect.w), &(decrementBtn.rect.h), renderer); + if(btnTexture == NULL) + { + fprintf(stderr, "WARNING: Can't create texture: %s\n", SDL_GetError()); + return false; + } + btnHoveredTexture = createGenericButtonTexture("-", font, 8, COLOR_GENERIC_BUTTON_BORDER, COLOR_GENERIC_BUTTON_BACKGROUND, 4, 8, &(decrementBtn.rect.w), &(decrementBtn.rect.h), renderer); + + if(btnHoveredTexture == NULL) + { + fprintf(stderr, "WARNING: Can't create hover texture: %s\n", SDL_GetError()); + return false; + } + decrementBtn.texture = btnTexture; + decrementBtn.hoverTexture = btnHoveredTexture; + + //Draw everything + drawButtonOnRenderer(renderer, &incrementBtn); + drawButtonOnRenderer(renderer, &decrementBtn); + drawTextLabel(renderer, &nbJoueurLabel); + + //free + freeTextLabel(&nbJoueurLabel); + freeButton(&incrementBtn); + + return true; +} diff --git a/Pontu/test/testCreationMenu.c b/Pontu/test/testCreationMenu.c new file mode 100644 index 0000000..4d907dc --- /dev/null +++ b/Pontu/test/testCreationMenu.c @@ -0,0 +1,98 @@ +#include +#include +#include "view/GameCreationMenu.h" +#include "engine/FontLoader.h" +#include "engine/TextInput.h" + +int testCreationMenu(void) { + SDL_Window *window = NULL; + SDL_Renderer *renderer = NULL; + SDL_Texture* picture; + TextInput textInput; + int statut = EXIT_FAILURE; + char* path = "rsrc/img/Lenna.png"; + int i=0; + int w, h; + if(0 != SDL_Init(SDL_INIT_VIDEO)) + { + fprintf(stderr, "Erreur SDL_INIT: %s\n", SDL_GetError()); + goto Quit; + } + + //fenetre + window = SDL_CreateWindow("FenĂȘtre", SDL_WINDOWPOS_CENTERED, SDL_WINDOWPOS_CENTERED, 640,480, SDL_WINDOW_SHOWN); + if(window == NULL) + { + fprintf(stderr, "Erreur SDL_CreateWindow: %s\n", SDL_GetError()); + goto Quit; + } + + //rendu + renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED); + if(renderer == NULL) + { + fprintf(stderr, "Erreur SDL_CreateRenderer: %s\n", SDL_GetError()); + goto Quit; + } + + //Fonts + if(TTF_Init() == -1) + { + fprintf(stderr, "Erreur: TTF_Init: %s\n", TTF_GetError()); + goto Quit; + } + + if(0 != SDL_SetRenderDrawColor(renderer, 0,0,0,0)) //choisi la couleur avec laquelle travailler + { + fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError()); + goto Quit; + } + + if(0 != SDL_RenderClear(renderer)) //efface le rendu en le repeignant avec la couleur choisi + { + fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError()); + goto Quit; + } + + if(0 != SDL_SetRenderDrawColor(renderer, 255,255,255,255)) //choisi la couleur avec laquelle travailler + { + fprintf(stderr, "Erreur SDL_SetRenderDrawColor: %s\n", SDL_GetError()); + goto Quit; + } + + + SDL_bool quit = SDL_FALSE; + SDL_Event event; + + FontHandler fontHandler = loadFonts(); + + SDL_GetWindowSize(window, &w, &h); + while(!quit) + { + while(SDL_PollEvent(&event)) + { + switch(event.type) + { + case SDL_QUIT: + quit = SDL_TRUE; + break; + case SDL_MOUSEBUTTONUP: + break; + } + } + drawGameCreationMenu(renderer, fontHandler.fonts[FONT_retro], w, h); + SDL_RenderPresent(renderer); + + SDL_Delay(20); + } + +Quit: + freeFonts(fontHandler); + if(renderer != NULL) + SDL_DestroyRenderer(renderer); + if(window != NULL) + SDL_DestroyWindow(window); + TTF_Quit(); + SDL_Quit(); + return statut; +}