marouault 3 years ago
commit 3bf8be3e17

@ -6,7 +6,7 @@
//#include "../test/testConnectionMenu.c"
//#include "../test/testDrawMainMenu.c
//#include "../test/testSettingsView.c"
//#include "../test/testCreationMenu.c"
#include "../test/testCreationMenu.c"
//#include "../test/testGameInterface.c"
//#include "../test/testConnectionMenu.c"
//#include "../test/testDrawMainMenu.c"
@ -22,7 +22,7 @@ int main(int argc, char *argv[]) {
//testAudioHandler();
//testFontLoader();
//testGenerateurTexture();
testTextInputProcessor();
//testTextInputProcessor();
//testButtonTextureLoader();
//testConnectionMenu();
//testMenuEndGame();
@ -30,7 +30,7 @@ int main(int argc, char *argv[]) {
//testGameInterface();
//testConnectionMenu();
//testDrawMainMenu();
//testCreationMenu();
testCreationMenu();
// testSettingsView();
return 0;

@ -22,4 +22,6 @@ void drawTextLabel(SDL_Renderer* renderer, TextLabel* label);
void clearTextLabel(SDL_Renderer* renderer, const TextLabel* label, SDL_Color color);
void replaceTextAndTextureOfTextLabel(SDL_Renderer* renderer, TextLabel* label, TTF_Font* font, char* text, SDL_Color* bg);
#endif //TEXT_LABEL_INCLUDED

@ -25,6 +25,10 @@ typedef struct
P_Button* colorButtons;
TextInput pseudoInput;
Player* player;
int w;
int h;
int x;
int y;
}CreateMenuLine;
typedef struct
@ -36,12 +40,14 @@ typedef struct
typedef struct
{
int* nbPlayers;
TextLabel* nbPlayersLbl;
TTF_Font* font;
int minx;
int maxx;
int miny;
CreateMenuLine* lines;
SDL_Renderer* renderer;
SDL_Color* bg;
}IncrementParams;
typedef struct
@ -49,6 +55,9 @@ typedef struct
int* nbPlayers;
CreateMenuLine* lines;
SDL_Renderer* renderer;
TextLabel* nbPlayersLbl;
SDL_Color* bg;
TTF_Font* font;
}DecrementParams;
bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState, TTF_Font* font, int width, int height);

@ -52,8 +52,11 @@ InputElement proccessInput(InputProcessor *inputProcessor)
}
}
if (!textInputClicked) {
inputProcessor->selectedTextInput->isActive = false;
inputProcessor->selectedTextInput = NULL;
if(inputProcessor->selectedTextInput != NULL)
{
inputProcessor->selectedTextInput->isActive = false;
inputProcessor->selectedTextInput = NULL;
}
SDL_StopTextInput();
}
return createInputElementNone();
@ -78,6 +81,11 @@ InputElement proccessInput(InputProcessor *inputProcessor)
addStringToInputTextValueAtCursor(inputProcessor->selectedTextInput, event.text.text);
break;
case SDL_TEXTEDITING:
if(inputProcessor->selectedTextInput == NULL)
{
fprintf(stderr, "WARNING: selectedTextInput is NULL\n");
break;
}
inputProcessor->selectedTextInput->cursorPosition = event.edit.start;
break;
case SDL_KEYDOWN:

@ -3,6 +3,13 @@
#include "engine/TextureLoader.h"
#include <errno.h>
void replaceTextAndTextureOfTextLabel(SDL_Renderer* renderer, TextLabel* label, TTF_Font* font, char* text, SDL_Color* bg)
{
copyTextIntoTextLabel(label, text);
clearTextLabel(renderer, label, *bg);
attachTextureToTextLabel(renderer, label, font);
}
void attachTextureToTextLabel(SDL_Renderer* renderer, TextLabel* label, TTF_Font* font) {
SDL_Surface* surface = TTF_RenderText_Solid(font, label->text, label->color);

@ -24,9 +24,15 @@ void incrementNbPlayer(P_Button* caller)
fprintf(stderr, "WARNING: Can't increment up to 5 and more\n");
return;
}
createPlayersLines(params->renderer, params->font, params->minx, params->maxx, params->lines[*nbPlayers-1].h+params->lines[*nbPlayers-1].y, 1, &params->lines[*nbPlayers]);
drawCreateMenuLine(params->renderer, &params->lines[*nbPlayers]);
++(*nbPlayers);
createPlayersLines(params->renderer, params->font, params->minx, params->maxx, params->miny, *params->nbPlayers, params->lines);
drawCreateMenuLine(params->renderer, params->lines+*params->nbPlayers-1);
char nbPlayerStr[2] = {*nbPlayers + 48, 0};
replaceTextAndTextureOfTextLabel(params->renderer, params->nbPlayersLbl, params->font, nbPlayerStr, params->bg);
drawTextLabel(params->renderer, params->nbPlayersLbl);
SDL_RenderPresent(params->renderer);
}
void decrementNbPlayer(P_Button* caller)
{
@ -37,8 +43,22 @@ void decrementNbPlayer(P_Button* caller)
fprintf(stderr, "WARNING: Can't decrement down to 1 and less\n");
return;
}
freeCreateMenuLine(&params->lines[*nbPlayers-1]);
*nbPlayers -= 1;
--(*nbPlayers);
char nbPlayerStr[2] = {*nbPlayers + 48, 0};
replaceTextAndTextureOfTextLabel(params->renderer, params->nbPlayersLbl, params->font, nbPlayerStr, params->bg);
SDL_Texture* bedSheet = SDL_CreateTexture(params->renderer, SDL_PIXELFORMAT_RGBA8888, SDL_TEXTUREACCESS_TARGET, params->lines[*nbPlayers].w, params->lines[*nbPlayers].h);
SDL_Rect stretch = {.x = params->lines[*nbPlayers].x, .y=params->lines[*nbPlayers].y, .w = params->lines[*nbPlayers].w, .h=params->lines[*nbPlayers].h};
SDL_SetRenderTarget(params->renderer, bedSheet);
SDL_SetRenderDrawColor(params->renderer, params->bg->r, params->bg->g, params->bg->b, params->bg->a);
SDL_RenderClear(params->renderer);
SDL_SetRenderTarget(params->renderer, NULL);
SDL_RenderCopy(params->renderer, bedSheet, NULL, &stretch);
freeCreateMenuLine(&params->lines[*nbPlayers]);
drawTextLabel(params->renderer, params->nbPlayersLbl);
SDL_RenderPresent(params->renderer);
SDL_DestroyTexture(bedSheet);
}
void changePlayerColor(P_Button* caller)
@ -111,10 +131,11 @@ CreateMenuLine createCreateMenuLine(SDL_Renderer* renderer, int xmin, int y, int
P_Button* colorsBtn = (P_Button*) malloc(sizeof(P_Button)*NB_COLORS);
P_Button ai = createButton(NULL, NULL, xmin, y, 0, 0, NULL);
CreateMenuLine line;
CreateMenuLine line = {.x=xmin, y};
SDL_Texture* aiTexture = createGenericButtonTexture("X", font, 16, COLOR_GENERIC_BUTTON_BACKGROUND, COLOR_GENERIC_BUTTON_BORDER, 4, 8, &(ai.rect.w), &(ai.rect.h), renderer);
SDL_Texture* aiTextureHovered = createGenericButtonTexture("X", font, 16, COLOR_GENERIC_BUTTON_BACKGROUND, COLOR_GENERIC_BUTTON_BACKGROUND, 4, 8, &ai.rect.w, &ai.rect.h, renderer);
line.h = ai.rect.h;
ai.texture = aiTexture;
ai.hoverTexture = aiTextureHovered;
@ -138,6 +159,7 @@ CreateMenuLine createCreateMenuLine(SDL_Renderer* renderer, int xmin, int y, int
colorsBtn[i].hoverTexture = btnTextureHover;
}
line.w = colorsBtn[0].rect.x + colorsBtn[0].rect.w;
line.aiButton=ai;
line.colorButtons=colorsBtn;
line.player=player;
@ -163,6 +185,7 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState,TTF_Fon
int nbButtons = 2;
TextLabel *labels[nbLabels];
P_Button* buttons = (P_Button*) malloc(sizeof(P_Button)*nbButtons);
SDL_Color bg = {55, 120, 175, 255};
// TextLabel for "Nombre de joueur.euse.s" creation
@ -170,7 +193,7 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState,TTF_Fon
SDL_Color white = {225, 255, 255, 255};
CreateMenuLine lines[NB_PLAYER_MAX];
TextLabel titleLabel = createTextLabel(
"Nombre de joueur·euse·s",
"Nombre de joueur.euse.s",
&titleLabelPos,
1,
&white,
@ -294,10 +317,10 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState,TTF_Fon
labels[2] = &aiLabel;
labels[3] = &pseudoLabel;
labels[4] = &colorLabel;
DecrementParams dparams= {.nbPlayers=&nbPlayers, .lines=lines, .renderer=renderer};
DecrementParams dparams= {.nbPlayers=&nbPlayers, .lines=lines, .renderer=renderer, .bg = &bg, .nbPlayersLbl=&nbPlayerLabel, .bg=&bg, .font=font};
decrementBtn.arg = &dparams;
IncrementParams iparams= {.nbPlayers=&nbPlayers, .lines=lines, .minx=titleLabelPos.x, .maxx=incrementBtn.rect.x+incrementBtn.rect.w, .miny=colorLabelPos.y+colorLabel.textZone.h + 16, .font=font, .renderer=renderer};
IncrementParams iparams= {.nbPlayers=&nbPlayers, .lines=lines, .minx=titleLabelPos.x, .maxx=incrementBtn.rect.x+incrementBtn.rect.w, .miny=colorLabelPos.y+colorLabel.textZone.h + 16, .font=font, .renderer=renderer, .nbPlayersLbl=&nbPlayerLabel, .bg=&bg};
incrementBtn.arg = &iparams;
buttons[0] = decrementBtn;
@ -306,12 +329,10 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState,TTF_Fon
InputProcessor inputProcessor = createInputProcessor();
array_P_Button_AddElement(&inputProcessor.tabButton, incrementBtn);
array_P_Button_AddElement(&inputProcessor.tabButton, decrementBtn);
SDL_SetRenderDrawColor(renderer, bg.r, bg.g, bg.b, bg.a);
drawGameCreationMenu(renderer, labels, nbLabels, buttons, nbButtons, lines, nbPlayers);
while(*generalState == GS_GameCreationMenu)
{
printf("%d\n", nbPlayers);
SDL_SetRenderDrawColor(renderer, 55, 120, 175, 255);
SDL_RenderClear(renderer);
InputElement inputElement;
while (InputType_None != (inputElement = proccessInput(&inputProcessor)).type)
{
@ -331,6 +352,15 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState,TTF_Fon
break;
}
break;
case InputType_ButtonChanged:
{
if(inputElement.data.buttonEvent.button == &incrementBtn || inputElement.data.buttonEvent.button == &decrementBtn)
{
nbPlayerLabel.text[0] = nbPlayers + 48;
SDL_RenderClear(renderer);
drawGameCreationMenu(renderer, labels, nbLabels, buttons, nbButtons, lines, nbPlayers);
}
}
case InputType_MoveGame:
break;
@ -343,9 +373,6 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState,TTF_Fon
}
}
nbPlayerLabel.text[0] = nbPlayers+48;
drawGameCreationMenu(renderer, labels, nbLabels, buttons, nbButtons, lines, nbPlayers);
SDL_RenderPresent(renderer);
SDL_Delay(25);
}

@ -13,7 +13,7 @@ int testCreationMenu(void) {
char* path = "rsrc/img/Lenna.png";
int i=0;
int w, h;
int nbPlayer=1;
int nbPlayer=3;
if(0 != SDL_Init(SDL_INIT_VIDEO))
{
fprintf(stderr, "Erreur SDL_INIT: %s\n", SDL_GetError());

Loading…
Cancel
Save