resolve conflict

master
Allan POINT 3 years ago
commit c0010d6b9b

@ -8,7 +8,7 @@
#ifndef PLAYER_H
#define PLAYER_H
#define PSEUDO_LENMAX 50
#define PSEUDO_LENMAX 13
#include "model/PlayersColors.h"
#include <string.h>

@ -34,7 +34,7 @@ Game newGame(const size_t nbPlayers, const Player player[])
{
Game g = { // In Placement phase, the last player initialized is the 1st to play
.currentPlayerID = nbPlayers - 1,
.nb_rounds = 0,
.nb_rounds = 1,
.phase = PLACEMENT,
.board = newBoard(nbPlayers),
.nbPlayers = nbPlayers,

@ -3,8 +3,8 @@
#include <SDL2/SDL_ttf.h>
void freeCreateMenuLine(CreateMenuLine* line);
CreateMenuLine createCreateMenuLine(SDL_Renderer* renderer, int xmin, int y, int xmax, TTF_Font* font, InputProcessor* inproc, bool* colorChanged);
void createPlayersLines(SDL_Renderer* renderer, TTF_Font* font, int minx, int maxx, int miny,int nbPlayer, CreateMenuLine* lines, InputProcessor* inproc, bool* colorChanged);
CreateMenuLine createCreateMenuLine(SDL_Renderer* renderer, int xmin, int y, int xmax, TTF_Font* font, InputProcessor* inproc, Player players[], int noLine, bool* colorChanged);
void createPlayersLines(SDL_Renderer* renderer, TTF_Font* font, int minx, int maxx, int miny,int nbPlayer, CreateMenuLine* lines, InputProcessor* inproc, Player players[], bool* colorChanged);
bool drawGameCreationMenu(SDL_Renderer* renderer, TextLabel** labels, int nbLabels, P_Button* buttons, int nbButtons, CreateMenuLine* lines, int nbPlayer, const SDL_Color* bg);
bool drawCreateMenuLine(SDL_Renderer* renderer, CreateMenuLine* line);
void changePlayerColor(P_Button* caller);
@ -12,9 +12,13 @@ void decrementNbPlayer(P_Button* caller);
void incrementNbPlayer(P_Button* caller);
void validateCreation(P_Button* caller);
void cancelCreation(P_Button* caller);
void fillPlayerArray(Player players[4], const CreateMenuLine inputs[4], int nbPlayer);
void fillPlayerArray(Player players[4], const CreateMenuLine inputs[4], int nbPlayer) {
for (int i = 0; i < nbPlayer; i++) {
strcpy(players[i].pseudo, inputs[i].pseudoInput.value);
}
}
void incrementNbPlayer(P_Button* caller)
{
@ -82,17 +86,17 @@ bool drawGameCreationMenu(SDL_Renderer* renderer, TextLabel** labels, int nbLabe
}
void createPlayersLines(SDL_Renderer* renderer, TTF_Font* font, int minx, int maxx, int miny,int nbPlayer, CreateMenuLine* lines, InputProcessor* inproc, bool* colorChanged)
void createPlayersLines(SDL_Renderer* renderer, TTF_Font* font, int minx, int maxx, int miny,int nbPlayer, CreateMenuLine* lines, InputProcessor* inproc, Player* players, bool* colorChanged)
{
for(int i=0; i<nbPlayer; ++i)
{
if(i==0)
{
// Position of first line is absolute
lines[i] = createCreateMenuLine(renderer, minx, miny + 16, maxx,font, inproc, colorChanged);
lines[i] = createCreateMenuLine(renderer, minx, miny + 16, maxx,font, inproc, players, i, colorChanged);
}else{
// Position of other lines is relative to the first one (16 px (margin) + nb_lines_already_drawn * height of AI checkbox)
lines[i] = createCreateMenuLine(renderer, minx, miny + 16 + 16 + i* lines[i-1].aiButton.rect.h, maxx,font, inproc, colorChanged);
lines[i] = createCreateMenuLine(renderer, minx, miny + 16 + 16 + i* lines[i-1].aiButton.rect.h, maxx,font, inproc, players, i, colorChanged);
}
}
@ -121,7 +125,7 @@ void cancelCreation(P_Button* caller)
*gs = GS_MainMenu;
}
CreateMenuLine createCreateMenuLine(SDL_Renderer* renderer, int xmin, int y, int xmax, TTF_Font* font, InputProcessor* inproc, bool* colorChanged)
CreateMenuLine createCreateMenuLine(SDL_Renderer* renderer, int xmin, int y, int xmax, TTF_Font* font, InputProcessor* inproc, Player* players, int noLine, bool* colorChanged)
{
int const wColorBtn = 32;
int const hColorBtn = 32;
@ -160,12 +164,7 @@ CreateMenuLine createCreateMenuLine(SDL_Renderer* renderer, int xmin, int y, int
}
params->color=playersColors[i];
params->colorChanged = colorChanged;
params->p = (Player*) malloc(sizeof(Player));
if (params->p == NULL) {
fprintf(stderr, "WARNING: can't malloc! (Player)\n");
fflush(stderr);
break;
}
params->p = &players[noLine];
picker.colorButtons[i] = createButton(NULL, NULL, xmax-wColorBtn*(i+1), y, wColorBtn, hColorBtn, changePlayerColor);
picker.colorButtons[i].arg = (void*)params;
btnTexture = createGenericButtonTexture("", font, 0, COLOR_GENERIC_BUTTON_BORDER, PLAYER_SDL_COLORS[i], 4, 8, NULL, NULL, renderer);
@ -199,7 +198,7 @@ void freeCreateMenuLine(CreateMenuLine* line)
bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState, AudioHandler* ah, TTF_Font* font, int width, int height, Player players[], int* nbPlayers)
{
*nbPlayers = 2;
*nbPlayers = 2;
int const nbLabels = 5;
int nbButtons = 4;
TextLabel *labels[nbLabels];
@ -374,7 +373,7 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState, AudioH
InputProcessor inputProcessor = createInputProcessor();
// Creating 2 player lines (lines with a AI checkbox, a text input for the nickname, and a color chooser)
createPlayersLines(renderer, font, titleLabelPos.x, incrementBtn.rect.x+incrementBtn.rect.w, colorLabel.textZone.y+colorLabel.textZone.h , NB_PLAYER_MAX, lines, &inputProcessor, &colorChanged);
createPlayersLines(renderer, font, titleLabelPos.x, incrementBtn.rect.x+incrementBtn.rect.w, colorLabel.textZone.y+colorLabel.textZone.h , NB_PLAYER_MAX, lines, &inputProcessor, players, &colorChanged);
DecrementParams dparams= {.nbPlayers=nbPlayers, .viewChanged=&viewChanged};
decrementBtn.arg = &dparams;
@ -445,9 +444,12 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState, AudioH
}
SDL_Delay(5);
}
// Filling player array
if (*generalState == GS_Game)
fillPlayerArray(players, lines, *nbPlayers);
//free
//free
freeInputProcessor(&inputProcessor);
freeTextLabel(&titleLabel);
freeButton(&incrementBtn);
@ -455,7 +457,7 @@ bool gameCreationMenu(SDL_Renderer* renderer, GeneralState* generalState, AudioH
free(buttons);
for (size_t i=0; i<*nbPlayers; ++i) {
for (size_t i=0; i < *nbPlayers; ++i) {
freeCreateMenuLine(&lines[i]);
}
return true;

@ -45,26 +45,25 @@ struct array_P_Button createGameInterfaceButtons(SDL_Renderer* renderer, FontHan
struct array_TextLabel createGameInterfaceLabels(SDL_Renderer* renderer, FontHandler* fontHandler) {
//Postion text label
SDL_Point positonNbTurnLabel = {.x=60, .y=850};
SDL_Point positionNumberNbTurnLabel = {.x=100, .y=850};
SDL_Point positionTimeLablel = {.x=770, .y=850};
//Color labal
SDL_Color colorLabel = {0, 255, 0, 255};
//Position label
PositionX_Type positionX = POSX_CENTER;
PositionY_Type positionY = POSY_CENTER;
struct array_TextLabel labels = array_TextLabel_Create();
// Label : Nb Turn
TextLabel nbTurnLabel = createTextLabel("Turn : ",&positonNbTurnLabel,1,&colorLabel,fontHandler->fonts[FONT_retro],renderer,positionX,positionY);
TextLabel nbTurnLabel = createTextLabel("Turn : ",&positonNbTurnLabel,1,&colorLabel,fontHandler->fonts[FONT_retro],renderer,POSX_CENTER,POSY_CENTER);
// Label : Number -> Nb Turn
TextLabel NumbernbTurnLabel = createTextLabel("1",&positionNumberNbTurnLabel,1,&colorLabel,fontHandler->fonts[FONT_retro],renderer,POSX_CENTER,POSY_CENTER);
// Label : Time of the game
TextLabel timeLabel = createTextLabel("Time : ",&positionTimeLablel,1,&colorLabel,fontHandler->fonts[FONT_retro],renderer,positionX,positionY);
TextLabel timeLabel = createTextLabel("Time : ",&positionTimeLablel,1,&colorLabel,fontHandler->fonts[FONT_retro],renderer,POSX_CENTER,POSY_CENTER);
//Add TextLabel to the array
array_TextLabel_AddElement(&labels, nbTurnLabel);
array_TextLabel_AddElement(&labels, timeLabel);
array_TextLabel_AddElement(&labels,NumbernbTurnLabel);
return labels;

@ -65,8 +65,8 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
for (size_t i=0; i<tabLabel.size; ++i){
drawTextLabel(renderer,&tabLabel.elems[i]);
}
SDL_RenderPresent(renderer);
bool needToPresent=true;
while(*generalState == GS_Game)
{
@ -96,7 +96,7 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
{
case GameAction_MovePiece:
drawMovePiece(renderer, &boardRect, &inputElement.data.move.start, &inputElement.data.move.end, &textureHandler, game.arrPlayers[game.currentPlayerID].color);
SDL_RenderPresent(renderer);
needToPresent=true;
if (game.phase == GAME_ENDED) {
*generalState = GS_EndOfGameMenu;
}
@ -117,11 +117,11 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
{
case GameAction_PlacePiece:
drawPlacePiece(renderer, &boardRect, &textureHandler, game.arrPlayers[(game.currentPlayerID<game.nbPlayers-1) ? game.currentPlayerID+1 : 0].color, &inputElement.data.coord);
SDL_RenderPresent(renderer);
needToPresent=true;
break;
case GameAction_RemoveBridge:
drawRemoveBridge(renderer, &boardRect, textureHandler.textures[TEXTURE_Water], &inputElement.data.coord);
SDL_RenderPresent(renderer);
needToPresent=true;
break;
}
@ -132,19 +132,20 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
}
if(nbRounds != game.nb_rounds) //Redraw nbTurn if has changed
{
char newNbTurn[20];
TextLabel nbTurnTextLabel = tabLabel.elems[0]; //First element -> nbTurn label
sprintf(newNbTurn,"Turn : ",game.nb_rounds); //Concatenate Turn with nbTurn
replaceTextAndTextureOfTextLabel(renderer, &nbTurnTextLabel, fontHandler->fonts[FONT_retro], newNbTurn, &nbTurnTextLabel.color);
drawTextLabel(renderer,&nbTurnTextLabel);
//Nouv text label ->nbTurn (replace texture) => replaceTextAndTextureOfTextLabel
//Redraw text label
SDL_RenderPresent(renderer);
TextLabel nbTurnTextLabel = tabLabel.elems[2]; //Third element -> Number of nbTurn
sprintf(newNbTurn,"%d",game.nb_rounds); //Concatenate Turn with nbTurn
replaceTextAndTextureOfTextLabel(renderer, &nbTurnTextLabel, fontHandler->fonts[FONT_retro], newNbTurn, &nbTurnTextLabel.color);
SDL_SetRenderDrawColor(renderer, 50,10,10, SDL_ALPHA_OPAQUE);
SDL_RenderFillRect(renderer,&nbTurnTextLabel.textZone);
fprintf(stderr,"%s\n",nbTurnTextLabel.text);
drawTextLabel(renderer,&nbTurnTextLabel);
needToPresent=true;
}
}
break;
}
case InputType_Window_Resize: {
@ -159,7 +160,7 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
for (size_t i=0; i<tabLabel.size; ++i){
drawTextLabel(renderer,&tabLabel.elems[i]);
}
SDL_RenderPresent(renderer);
needToPresent=true;
}
case InputType_None:
default:
@ -170,6 +171,11 @@ void gameView(GeneralState* generalState, SDL_Window* window, SDL_Renderer* rend
interactiveCases = getInteractiveCases(&game, inputProcessor.selectedCase);
}
if(needToPresent)
{
SDL_RenderPresent(renderer);
needToPresent=false;
}
SDL_Delay(5);
}

@ -79,5 +79,10 @@ Quit:
SDL_DestroyWindow(window);
TTF_Quit();
SDL_Quit();
if (generalState == GS_Game) {
for (int i = 0; i < nbPlayers; i++) {
printf("%s\n", players[i].pseudo);
}
}
return statut;
}

Loading…
Cancel
Save