|
|
@ -16,7 +16,7 @@ struct endGameMenuTextLabel {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @brief Button handle which set a generalState to GS_MainMenu
|
|
|
|
* @brief Button handle which set a generalState to GS_MainMenu
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param caller The button clicked
|
|
|
|
* @param caller The button clicked
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
void setStateToMainMenu(P_Button* caller) {
|
|
|
|
void setStateToMainMenu(P_Button* caller) {
|
|
|
@ -29,9 +29,9 @@ SDL_Rect getEndGameMenuRect(SDL_Window* window) {
|
|
|
|
SDL_GetWindowSize(window, &windowW, &windowH);
|
|
|
|
SDL_GetWindowSize(window, &windowW, &windowH);
|
|
|
|
|
|
|
|
|
|
|
|
SDL_Rect rect = {
|
|
|
|
SDL_Rect rect = {
|
|
|
|
.x=windowW/10,
|
|
|
|
.x=windowW/10,
|
|
|
|
.y=0,
|
|
|
|
.y=0,
|
|
|
|
.w=windowW*80/100,
|
|
|
|
.w=windowW*80/100,
|
|
|
|
.h=windowH
|
|
|
|
.h=windowH
|
|
|
|
};
|
|
|
|
};
|
|
|
|
return rect;
|
|
|
|
return rect;
|
|
|
@ -39,17 +39,17 @@ SDL_Rect getEndGameMenuRect(SDL_Window* window) {
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
/**
|
|
|
|
* @brief Create button For EndGameMenu
|
|
|
|
* @brief Create button For EndGameMenu
|
|
|
|
*
|
|
|
|
*
|
|
|
|
* @param renderer The renderer where buttons will be drawn
|
|
|
|
* @param renderer The renderer where buttons will be enable
|
|
|
|
* @param font Font used by buttons
|
|
|
|
* @param font Font used by buttons
|
|
|
|
* @param rect Rect in which the endGameMenu is drawn
|
|
|
|
* @param rect Rect in which the endGameMenu is enable
|
|
|
|
* @param state generalState which will be attached to the button
|
|
|
|
* @param state generalState which will be attached to the button
|
|
|
|
* @return P_Button
|
|
|
|
* @return P_Button
|
|
|
|
*/
|
|
|
|
*/
|
|
|
|
P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, const SDL_Rect* rect, GeneralState* state) {
|
|
|
|
P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, const SDL_Rect* rect, GeneralState* state) {
|
|
|
|
int sizeX;
|
|
|
|
int sizeX;
|
|
|
|
int sizeY;
|
|
|
|
int sizeY;
|
|
|
|
|
|
|
|
|
|
|
|
SDL_Texture* texture = createGenericButtonTexture("Retour menu", font, 50, COLOR_GENERIC_BUTTON_BORDER, COLOR_GENERIC_BUTTON_BACKGROUND, 4, 4, &sizeX, &sizeY, renderer);
|
|
|
|
SDL_Texture* texture = createGenericButtonTexture("Retour menu", font, 50, COLOR_GENERIC_BUTTON_BORDER, COLOR_GENERIC_BUTTON_BACKGROUND, 4, 4, &sizeX, &sizeY, renderer);
|
|
|
|
if (texture == NULL) {
|
|
|
|
if (texture == NULL) {
|
|
|
|
perror(SDL_GetError());
|
|
|
|
perror(SDL_GetError());
|
|
|
@ -60,7 +60,7 @@ P_Button createButtonForEndGameMenu(SDL_Renderer* renderer, TTF_Font* font, cons
|
|
|
|
perror(SDL_GetError());
|
|
|
|
perror(SDL_GetError());
|
|
|
|
exit(errno);
|
|
|
|
exit(errno);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
P_Button buttonMenuEndGame = createButton(texture, textureHover, rect->x, rect->y, sizeX, sizeY, &setStateToMainMenu);
|
|
|
|
P_Button buttonMenuEndGame = createButton(texture, textureHover, rect->x, rect->y, sizeX, sizeY, &setStateToMainMenu);
|
|
|
|
buttonMenuEndGame.arg = state;
|
|
|
|
buttonMenuEndGame.arg = state;
|
|
|
@ -85,7 +85,7 @@ TextLabel createEliminationTurnLabel(SDL_Renderer* renderer, TTF_Font* font, con
|
|
|
|
sprintf(text, "Tour: %d", eliminationTurn);
|
|
|
|
sprintf(text, "Tour: %d", eliminationTurn);
|
|
|
|
|
|
|
|
|
|
|
|
TextLabel label = createUnsizedTextLabel(text, color, font, renderer);
|
|
|
|
TextLabel label = createUnsizedTextLabel(text, color, font, renderer);
|
|
|
|
|
|
|
|
|
|
|
|
free(text);
|
|
|
|
free(text);
|
|
|
|
|
|
|
|
|
|
|
|
return label;
|
|
|
|
return label;
|
|
|
@ -150,7 +150,7 @@ struct endGameMenuTextLabel createLabels(SDL_Renderer* renderer, const Player pl
|
|
|
|
for (size_t i=0; i<nbPlayers; ++i) {
|
|
|
|
for (size_t i=0; i<nbPlayers; ++i) {
|
|
|
|
array_TextLabel_AddElement(&labels.textLabels, createPseudoAndRankLabel(renderer, fontHandler->fonts[FONT_retro], &PLAYER_SDL_COLORS[players[i].color], players[i].rank, players[i].pseudo));
|
|
|
|
array_TextLabel_AddElement(&labels.textLabels, createPseudoAndRankLabel(renderer, fontHandler->fonts[FONT_retro], &PLAYER_SDL_COLORS[players[i].color], players[i].rank, players[i].pseudo));
|
|
|
|
array_PositionSpecifier_AddElement(&labels.positionSpecifiers, getPseudoAndRankPositionSpecifier(&array_TextLabel_Last(&labels.textLabels)->textZone, players[i].rank));
|
|
|
|
array_PositionSpecifier_AddElement(&labels.positionSpecifiers, getPseudoAndRankPositionSpecifier(&array_TextLabel_Last(&labels.textLabels)->textZone, players[i].rank));
|
|
|
|
|
|
|
|
|
|
|
|
array_TextLabel_AddElement(&labels.textLabels, createEliminationTurnLabel(renderer, fontHandler->fonts[FONT_retro], &PLAYER_SDL_COLORS[players[i].color], players[i].eliminationTurn));
|
|
|
|
array_TextLabel_AddElement(&labels.textLabels, createEliminationTurnLabel(renderer, fontHandler->fonts[FONT_retro], &PLAYER_SDL_COLORS[players[i].color], players[i].eliminationTurn));
|
|
|
|
array_PositionSpecifier_AddElement(&labels.positionSpecifiers, getEliminationTurnPositionSpecifier(&array_TextLabel_Last(&labels.textLabels)->textZone, players[i].rank));
|
|
|
|
array_PositionSpecifier_AddElement(&labels.positionSpecifiers, getEliminationTurnPositionSpecifier(&array_TextLabel_Last(&labels.textLabels)->textZone, players[i].rank));
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -159,10 +159,10 @@ struct endGameMenuTextLabel createLabels(SDL_Renderer* renderer, const Player pl
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void drawEndGameMenu(SDL_Renderer* renderer, const SDL_Rect rectMenuEndGame, struct endGameMenuTextLabel* labels) {
|
|
|
|
void drawEndGameMenu(SDL_Renderer* renderer, const SDL_Rect rectMenuEndGame, struct endGameMenuTextLabel* labels) {
|
|
|
|
|
|
|
|
|
|
|
|
SDL_SetRenderDrawColor(renderer, 220,220,220,255);
|
|
|
|
SDL_SetRenderDrawColor(renderer, 220,220,220,255);
|
|
|
|
SDL_RenderFillRect(renderer, &rectMenuEndGame);
|
|
|
|
SDL_RenderFillRect(renderer, &rectMenuEndGame);
|
|
|
|
|
|
|
|
|
|
|
|
for (size_t i=0; i<labels->textLabels.size; ++i) {
|
|
|
|
for (size_t i=0; i<labels->textLabels.size; ++i) {
|
|
|
|
labels->textLabels.elems[i].textZone = adaptPosToRect(&labels->positionSpecifiers.elems[i], &rectMenuEndGame);
|
|
|
|
labels->textLabels.elems[i].textZone = adaptPosToRect(&labels->positionSpecifiers.elems[i], &rectMenuEndGame);
|
|
|
|
drawTextLabel(renderer, &labels->textLabels.elems[i]);
|
|
|
|
drawTextLabel(renderer, &labels->textLabels.elems[i]);
|
|
|
@ -184,10 +184,10 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r
|
|
|
|
};
|
|
|
|
};
|
|
|
|
PositionSpecifier positionSpecifierButtonRetour = newPositionSpecifier(&base100, POSX_CENTER, POSY_BOTTOM, ASPECT_KEEP_FIT);
|
|
|
|
PositionSpecifier positionSpecifierButtonRetour = newPositionSpecifier(&base100, POSX_CENTER, POSY_BOTTOM, ASPECT_KEEP_FIT);
|
|
|
|
buttonMenuEndGame->rect = adaptPosToRect(&positionSpecifierButtonRetour, &endGameMenuRect);
|
|
|
|
buttonMenuEndGame->rect = adaptPosToRect(&positionSpecifierButtonRetour, &endGameMenuRect);
|
|
|
|
buttonMenuEndGame->drawn = false;
|
|
|
|
buttonMenuEndGame->enable = false;
|
|
|
|
|
|
|
|
|
|
|
|
struct endGameMenuTextLabel labels = createLabels(renderer, players, nbPlayers, fontHandler);
|
|
|
|
struct endGameMenuTextLabel labels = createLabels(renderer, players, nbPlayers, fontHandler);
|
|
|
|
|
|
|
|
|
|
|
|
drawEndGameMenu(renderer, endGameMenuRect, &labels);
|
|
|
|
drawEndGameMenu(renderer, endGameMenuRect, &labels);
|
|
|
|
|
|
|
|
|
|
|
|
while(*generalState == GS_EndOfGameMenu)
|
|
|
|
while(*generalState == GS_EndOfGameMenu)
|
|
|
@ -213,36 +213,36 @@ void endGameMenu(GeneralState* generalState, SDL_Window* window, SDL_Renderer* r
|
|
|
|
}
|
|
|
|
}
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
case InputType_Window_Resize: {
|
|
|
|
case InputType_Window_Resize: {
|
|
|
|
|
|
|
|
|
|
|
|
const SDL_Rect rectM = {
|
|
|
|
const SDL_Rect rectM = {
|
|
|
|
.x=inputElement.data.windowSize.w/10,
|
|
|
|
.x=inputElement.data.windowSize.w/10,
|
|
|
|
.y=0,
|
|
|
|
.y=0,
|
|
|
|
.w=inputElement.data.windowSize.w*80/100,
|
|
|
|
.w=inputElement.data.windowSize.w*80/100,
|
|
|
|
.h=inputElement.data.windowSize.h
|
|
|
|
.h=inputElement.data.windowSize.h
|
|
|
|
};
|
|
|
|
};
|
|
|
|
drawEndGameMenu(renderer, rectM, &labels);
|
|
|
|
drawEndGameMenu(renderer, rectM, &labels);
|
|
|
|
|
|
|
|
|
|
|
|
buttonMenuEndGame->rect = adaptPosToRect(&positionSpecifierButtonRetour, &rectM);
|
|
|
|
buttonMenuEndGame->rect = adaptPosToRect(&positionSpecifierButtonRetour, &rectM);
|
|
|
|
buttonMenuEndGame->drawn = false;
|
|
|
|
buttonMenuEndGame->enable = false;
|
|
|
|
|
|
|
|
|
|
|
|
fprintf(stderr, "Resize\n"); fflush(stderr);
|
|
|
|
fprintf(stderr, "Resize\n"); fflush(stderr);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
default:
|
|
|
|
default:
|
|
|
|
break;
|
|
|
|
break;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
if (!buttonMenuEndGame->drawn) {
|
|
|
|
if (!buttonMenuEndGame->enable) {
|
|
|
|
drawButtonOnRenderer(renderer, buttonMenuEndGame);
|
|
|
|
drawButtonOnRenderer(renderer, buttonMenuEndGame);
|
|
|
|
SDL_RenderPresent(renderer);
|
|
|
|
SDL_RenderPresent(renderer);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
SDL_Delay(50);
|
|
|
|
SDL_Delay(50);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
freeInputProcessor(&inputProcessor);
|
|
|
|
freeInputProcessor(&inputProcessor);
|
|
|
|
|
|
|
|
|
|
|
|
for (size_t i=0; i<labels.textLabels.size; ++i) {
|
|
|
|
for (size_t i=0; i<labels.textLabels.size; ++i) {
|
|
|
|
freeTextLabel(&labels.textLabels.elems[i]);
|
|
|
|
freeTextLabel(&labels.textLabels.elems[i]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|