Commit c0d7fb75 authored by LAIRD Timothy's avatar LAIRD Timothy

Merge branch 'visual-clarity' into 'dev'

Visual clarity to dev

See merge request !8
parents 5f84162d d7858638
...@@ -128,7 +128,7 @@ void Panel_drawGame(Panel * self) ...@@ -128,7 +128,7 @@ void Panel_drawGame(Panel * self)
Panel_drawNode( self, &(self->world->nodes[i]) ); Panel_drawNode( self, &(self->world->nodes[i]) );
} }
//Panel_drawBasis(self); //Panel_drawBasis(self);
EndDrawing(); //EndDrawing();
} }
void Panel_drawBasis(Panel * self) void Panel_drawBasis(Panel * self)
...@@ -152,6 +152,7 @@ void Panel_drawNode(Panel * self, Node * n) ...@@ -152,6 +152,7 @@ void Panel_drawNode(Panel * self, Node * n)
char * soldierText = malloc(20*sizeof(char)); char * soldierText = malloc(20*sizeof(char));
sprintf(soldierText, "%d", n->soldiers + n->soldiersToAdd); sprintf(soldierText, "%d", n->soldiers + n->soldiersToAdd);
DrawText(soldierText, (int)screenPosition.x - MeasureText(soldierText, 20)/2, (int)screenPosition.y, 20, n->color); DrawText(soldierText, (int)screenPosition.x - MeasureText(soldierText, 20)/2, (int)screenPosition.y, 20, n->color);
free(soldierText);
} }
void Panel_drawEdge(Panel * self, Edge * e) void Panel_drawEdge(Panel * self, Edge * e)
......
...@@ -99,14 +99,14 @@ void Graphic_MouseHoverNodeRecrutement(Player * player, Vector2 mousePosition, P ...@@ -99,14 +99,14 @@ void Graphic_MouseHoverNodeRecrutement(Player * player, Vector2 mousePosition, P
} }
void Graphic_MouseHoverNodeChooseAttacker(Player * player, Vector2 mousePosition, Panel * panel){ void Graphic_MouseHoverNodeChooseAttacker(Player * player, Vector2 mousePosition, Panel * panel){
for(int nodeIndex = 0; nodeIndex < player->nodeCount; nodeIndex++){ for(int nodeIndex = 0; nodeIndex < player-> nodeCount; nodeIndex++){
Node* currentNode = player->nodes[nodeIndex]; Node* currentNode = player->nodes[nodeIndex];
if(CheckCollisionPointRec(mousePosition, currentNode->collisionHitbox)){ if(CheckCollisionPointRec(mousePosition, currentNode->collisionHitbox)){
Vector2 screenPosition= Panel_pixelFromPosition(panel, &(currentNode->position) ); Vector2 screenPosition= Panel_pixelFromPosition(panel, &(currentNode->position) );
if(!player->hasSelectedNode && currentNode->soldiers > 1){
DrawRing(screenPosition, 24.0, 28.0, 0.0, 360.0, 0.1, GOLD); DrawRing(screenPosition, 24.0, 28.0, 0.0, 360.0, 0.1, GOLD);
//DrawCircleV(screenPosition, 45, RAYWHITE);
if(!player->hasSelectedNode){
DrawText("attacker", (int)screenPosition.x + 30 , (int)screenPosition.y, 20, GOLD); DrawText("attacker", (int)screenPosition.x + 30 , (int)screenPosition.y, 20, GOLD);
Graphic_MouseHoverNodeChooseTarget(currentNode, mousePosition, panel);
} }
} }
} }
...@@ -119,13 +119,14 @@ void Graphic_MouseHoverNodeChooseAttacker(Player * player, Vector2 mousePosition ...@@ -119,13 +119,14 @@ void Graphic_MouseHoverNodeChooseAttacker(Player * player, Vector2 mousePosition
void Graphic_MouseHoverNodeChooseTarget(Node * originNode, Vector2 mousePosition, Panel * panel){ void Graphic_MouseHoverNodeChooseTarget(Node * originNode, Vector2 mousePosition, Panel * panel){
for(int neighbourIndex = 0; neighbourIndex < originNode->card; neighbourIndex++){ for(int neighbourIndex = 0; neighbourIndex < originNode->card; neighbourIndex++){
Vector2 screenPosition = Panel_pixelFromPosition(panel, &(originNode->edges[neighbourIndex]._target->position) ); Vector2 screenPosition = Panel_pixelFromPosition(panel, &(originNode->edges[neighbourIndex]._target->position) );
if( &(originNode->edges[neighbourIndex]._target->color) != &(originNode->color)){ if( originNode->edges[neighbourIndex]._target->color.r != originNode->color.r || originNode->edges[neighbourIndex]._target->color.g != originNode->color.g || originNode->edges[neighbourIndex]._target->color.b != originNode->color.b || originNode->edges[neighbourIndex]._target->color.a != originNode->color.a){
DrawRing(screenPosition, 24.0, 30.0, 0.0, 360.0, 0.1, GREEN); DrawRing(screenPosition, 24.0, 30.0, 0.0, 360.0, 0.1, GREEN);
}
if(CheckCollisionPointRec(mousePosition, originNode->edges[neighbourIndex]._target->collisionHitbox) && &(originNode->edges[neighbourIndex]._target->color) != &(originNode->color)){ if(CheckCollisionPointRec(mousePosition, originNode->edges[neighbourIndex]._target->collisionHitbox) && &(originNode->edges[neighbourIndex]._target->color) != &(originNode->color)){
DrawRing(screenPosition, 30.0, 33.0, 0.0, 360.0, 0.1, MAROON); DrawRing(screenPosition, 30.0, 33.0, 0.0, 360.0, 0.1, MAROON);
} }
} }
}
} }
...@@ -147,18 +148,21 @@ int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node * ...@@ -147,18 +148,21 @@ int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node *
bool endAnimation = false; bool endAnimation = false;
SetTargetFPS(60); // Set our game to run at 60 frames-per-second SetTargetFPS(60); // Set our game to run at 60 frames-per-second
Rectangle * nbAttackerRectangle = malloc(10*sizeof(Rectangle)); Rectangle nbAttackerRectangle[10];
printf("number dice avail %d \n", originNode->soldiersToAdd + originNode->soldiers ); printf("number dice avail %d \n", originNode->soldiersToAdd + originNode->soldiers );
for(int i = 0 ; i < originNode->soldiersToAdd + originNode->soldiers ; i ++){ for(int i = 0 ; i < originNode->soldiersToAdd + originNode->soldiers ; i ++){
nbAttackerRectangle[i] = (Rectangle){200 + (i-1)*250, screenHeight - 500, 150, 70}; nbAttackerRectangle[i] = (Rectangle){200 + (i-1)*250, screenHeight - 500, 150, 70};
printf("rectangle %d position : %f %f \n", i, nbAttackerRectangle[i].x, nbAttackerRectangle[i].y); printf("rectangle %d position : %f %f \n", i, nbAttackerRectangle[i].x, nbAttackerRectangle[i].y);
} }
char * whoseTurnToAttack = malloc(20*sizeof(char)); //char * whoseTurnToAttack = malloc(20*sizeof(char));
char whoseTurnToAttack[20];
sprintf(whoseTurnToAttack, "Player %d attacks ", attacker->ID); sprintf(whoseTurnToAttack, "Player %d attacks ", attacker->ID);
char * whoseTurnToDefend = malloc(20*sizeof(char)); //char * whoseTurnToDefend = malloc(20*sizeof(char));
char whoseTurnToDefend[20];
sprintf(whoseTurnToDefend, "Player %d", defender->ID); sprintf(whoseTurnToDefend, "Player %d", defender->ID);
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Main game loop // Main game loop
...@@ -172,15 +176,14 @@ int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node * ...@@ -172,15 +176,14 @@ int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node *
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
Vector2 mousePosition = GetMousePosition(); Vector2 mousePosition = GetMousePosition();
DrawTextEx(font, whoseTurnToAttack, (Vector2){screenWidth/2 - (MeasureTextEx(font, whoseTurnToAttack, 50.0, 3.0).x) + 50 , 70} , 50.0, 3.0, attacker->color); DrawTextEx(font, whoseTurnToAttack, (Vector2){screenWidth/2 - (MeasureTextEx(font, whoseTurnToAttack, 50.0, 3.0).x) + 100 , 70} , 50.0, 3.0, attacker->color);
DrawTextEx(font, whoseTurnToDefend, (Vector2){screenWidth/2 + 50 , 70}, 50.0, 3.0, defender->color); DrawTextEx(font, whoseTurnToDefend, (Vector2){screenWidth/2 + 100 , 70}, 50.0, 3.0, defender->color);
DrawText("How many dices do you want to involve in the fight ?", screenWidth/2 - (MeasureTextEx(font, "How many dice do you want to involve in the fight ?", 30.0, 3.0).x)/2 + 50 , 150 , 30, attacker->color); DrawText("How many dices do you want to involve in the fight ?", screenWidth/2 - (MeasureTextEx(font, "How many dice do you want to involve in the fight ?", 30.0, 3.0).x)/2 + 50 , 150 , 30, attacker->color);
for(int i = 1 ; i < originNode->soldiersToAdd + originNode->soldiers ; i ++){ for(int i = 1 ; i < originNode->soldiersToAdd + originNode->soldiers ; i ++){
DrawRectangleRec(nbAttackerRectangle[i], BLACK); DrawRectangleRec(nbAttackerRectangle[i], BLACK);
char * str_i = malloc(sizeof(int)); char str_i[5];
sprintf(str_i, "%d", i); sprintf(str_i, "%d", i);
DrawTextEx(font, str_i, (Vector2){nbAttackerRectangle[i].x + 55, nbAttackerRectangle[i].y + 5 }, 70.0, 3.0, WHITE); DrawTextEx(font, str_i, (Vector2){nbAttackerRectangle[i].x + 55, nbAttackerRectangle[i].y + 5 }, 70.0, 3.0, WHITE);
free(str_i);
if(CheckCollisionPointRec(mousePosition, nbAttackerRectangle[i])){ if(CheckCollisionPointRec(mousePosition, nbAttackerRectangle[i])){
DrawRectangleLinesEx(nbAttackerRectangle[i], 5, GREEN); DrawRectangleLinesEx(nbAttackerRectangle[i], 5, GREEN);
} }
...@@ -199,13 +202,13 @@ int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node * ...@@ -199,13 +202,13 @@ int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node *
// De-Initialization // De-Initialization
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
// Texture unloading // Texture unloading
free(whoseTurnToAttack); //free(whoseTurnToAttack);
free(whoseTurnToDefend); //free(whoseTurnToDefend);
free(nbAttackerRectangle); //free(nbAttackerRectangle);
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
} }
void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * targetNode, int nbOfAttackers, int * listOfDices, Font font) void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * targetNode, int nbOfAttackers,int nbOfDefenders, int * listOfDices, Font font)
{ {
printf("dice rolling begin\n"); printf("dice rolling begin\n");
...@@ -220,7 +223,11 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -220,7 +223,11 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
//Texture2D diceTexture = LoadTexture("diceRolling.png"); // Texture loading //Texture2D diceTexture = LoadTexture("diceRolling.png"); // Texture loading
Texture2D diceTexture = LoadTextureFromImage(texture); Texture2D diceTexture = LoadTextureFromImage(texture);
int defendersCount = targetNode->soldiers >= 3? 2:1; int defendersCount = nbOfDefenders;
printf("defender nbofsoldiers : %d \n", defendersCount);
for(int i = 0; i< defendersCount+nbOfAttackers; i++){
printf("listOfdices [%d] : %d \n",i,listOfDices[i]);
}
int attackersCount = nbOfAttackers; int attackersCount = nbOfAttackers;
Rectangle frameRec = { 0.0f, 0.0f, (float)diceTexture.width, (float)diceTexture.height/9 }; Rectangle frameRec = { 0.0f, 0.0f, (float)diceTexture.width, (float)diceTexture.height/9 };
...@@ -244,7 +251,7 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -244,7 +251,7 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
for(int i = 0 ; i < nbOfAttackers ; i++){ for(int i = 0 ; i < nbOfAttackers ; i++){
positionDiceAttacker[i] = (Vector2){200 + (i)*150, screenHeight - 500}; positionDiceAttacker[i] = (Vector2){200 + (i)*150, screenHeight - 500};
} }
for(int i = 0 ; i < defendersCount + 1 ; i++){ for(int i = 0 ; i < defendersCount ; i++){
positionDiceDefender[i] = (Vector2){1000 + (i)*150, screenHeight - 500}; positionDiceDefender[i] = (Vector2){1000 + (i)*150, screenHeight - 500};
} }
...@@ -274,10 +281,10 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -274,10 +281,10 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
DrawTextEx(font, whoseTurnToAttack, (Vector2){250 , 200} , 30.0, 3.0, attacker->color); DrawTextEx(font, whoseTurnToAttack, (Vector2){250 , 100} , 40.0, 3.0, attacker->color);
DrawTextEx(font, whoseTurnToDefend, (Vector2){screenWidth-700, 200}, 30.0, 3.0, defender->color); DrawTextEx(font, whoseTurnToDefend, (Vector2){screenWidth-700, 100}, 40.0, 3.0, defender->color);
DrawTextEx(font, " attacker", (Vector2){250 + MeasureTextEx(font, "Player X ", 30.0, 3.0).x , 210} , 15.0, 3.0, attacker->color); DrawTextEx(font, " attacker", (Vector2){250 , 150} , 30.0, 3.0, attacker->color);
DrawTextEx(font, " defender", (Vector2){screenWidth-700 + MeasureTextEx(font, "Player X ", 30.0, 3.0).x, 210}, 15.0, 3.0, defender->color); DrawTextEx(font, " defender", (Vector2){screenWidth-700, 150}, 30.0, 3.0, defender->color);
for(int i = 0 ; i < nbOfAttackers ; i++){ for(int i = 0 ; i < nbOfAttackers ; i++){
DrawTextureRec(diceTexture, frameRec, positionDiceAttacker[i], WHITE); DrawTextureRec(diceTexture, frameRec, positionDiceAttacker[i], WHITE);
} }
...@@ -301,7 +308,7 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -301,7 +308,7 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
framesCounter++; framesCounter++;
frameExit++; frameExit++;
//printf("%d frame before Exit1 \n", frameExit); //printf("%d frame before Exit1 \n", frameExit);
if(frameExit == 450) endDisplayResult = true; if(frameExit == 350) endDisplayResult = true;
if (framesCounter >= (60/framesSpeed)) if (framesCounter >= (60/framesSpeed))
{ {
framesCounter = 0; framesCounter = 0;
...@@ -319,10 +326,10 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -319,10 +326,10 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
ClearBackground(RAYWHITE); ClearBackground(RAYWHITE);
DrawTextEx(font, whoseTurnToAttack, (Vector2){250 , 200} , 30.0, 3.0, attacker->color); DrawTextEx(font, whoseTurnToAttack, (Vector2){250 , 100} , 40.0, 3.0, attacker->color);
DrawTextEx(font, whoseTurnToDefend, (Vector2){screenWidth-700, 200}, 30.0, 3.0, defender->color); DrawTextEx(font, whoseTurnToDefend, (Vector2){screenWidth-700, 100}, 40.0, 3.0, defender->color);
DrawTextEx(font, " attacker", (Vector2){250 + MeasureTextEx(font, "Player X ", 30.0, 3.0).x , 210} , 15.0, 3.0, attacker->color); DrawTextEx(font, " attacker", (Vector2){250 , 150} , 30.0, 3.0, attacker->color);
DrawTextEx(font, " defender", (Vector2){screenWidth-700 + MeasureTextEx(font, "Player X ", 30.0, 3.0).x, 210}, 15.0, 3.0, defender->color); DrawTextEx(font, " defender", (Vector2){screenWidth-700, 150}, 30.0, 3.0, defender->color);
for(int i = 0 ; i < nbOfAttackers ; i++){ for(int i = 0 ; i < nbOfAttackers ; i++){
switch (listOfDices[i]) switch (listOfDices[i])
{ {
...@@ -362,7 +369,7 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -362,7 +369,7 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
} }
//DrawTextureRec(diceTexture, frameRec, positionDiceAttacker[i], WHITE); //DrawTextureRec(diceTexture, frameRec, positionDiceAttacker[i], WHITE);
} }
for(int i = nbOfAttackers ; i < nbOfAttackers + defendersCount +1; i++){ for(int i = nbOfAttackers ; i < nbOfAttackers + defendersCount ; i++){
switch (listOfDices[i]) switch (listOfDices[i])
{ {
case 1: case 1:
...@@ -405,20 +412,20 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -405,20 +412,20 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
if(listOfDices[index] > listOfDices[index + attackersCount]){ if(listOfDices[index] > listOfDices[index + attackersCount]){
//targetNode->soldiers--; //targetNode->soldiers--;
//printf("Defenders lose a soldier\n"); //printf("Defenders lose a soldier\n");
DrawTextEx(font, "Defenders lose a soldier", (Vector2){screenWidth/2 - MeasureTextEx(font, "Defenders lose a soldier",50.0, 3.0 ).x/2 , 600}, 50.0, 3.0, BLACK); DrawTextEx(font, "Defenders lose a soldier", (Vector2){screenWidth/2 - MeasureTextEx(font, "Defenders lose a soldier",50.0, 3.0 ).x/2 -50 , 600}, 50.0, 3.0, BLACK);
}else{ }else{
//originNode->soldiers--; //originNode->soldiers--;
//remainingAttackers--; //remainingAttackers--;
//printf("Attackers lose a soldier\n"); //printf("Attackers lose a soldier\n");
DrawTextEx(font, "Attackers lose a soldier", (Vector2){screenWidth/2 - MeasureTextEx(font, "Attackers lose a soldier",50.0, 3.0 ).x/2 , 600}, 50.0, 3.0, BLACK); DrawTextEx(font, "Attackers lose a soldier", (Vector2){screenWidth/2 - MeasureTextEx(font, "Attackers lose a soldier",50.0, 3.0 ).x/2 -50 , 600}, 50.0, 3.0, BLACK);
} }
} }
if(targetNode->soldiers <= 0){ if(targetNode->soldiers <= 0){
//printf("Node has been conquered\n"); //printf("Node has been conquered\n");
DrawTextEx(font, "Node has been conquered", (Vector2){screenWidth/2 - MeasureTextEx(font, "Node has been conquered",50.0, 3.0 ).x/2 , 700}, 50.0, 3.0, BLACK); DrawTextEx(font, "Node has been conquered", (Vector2){screenWidth/2 - MeasureTextEx(font, "Node has been conquered",50.0, 3.0 ).x/2 -50 , 700}, 50.0, 3.0, BLACK);
//Player_remove_Node(defender, targetNode); //Player_remove_Node(defender, targetNode);
//Player_add_Node(self, targetNode); //Player_add_Node(self, targetNode);
//targetNode->soldiers = attackersCount; //targetNode->soldiers = attackersCount;
...@@ -437,7 +444,8 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * ...@@ -437,7 +444,8 @@ void diceRolling(Player * attacker, Player * defender, Node * originNode, Node *
free(whoseTurnToAttack); free(whoseTurnToAttack);
free(whoseTurnToDefend); free(whoseTurnToDefend);
free(positionDiceAttacker); free(positionDiceAttacker);
free(positionDiceDefender); // Close window and OpenGL context free(positionDiceDefender);
UnloadImage(texture); // Close window and OpenGL context
UnloadTexture(diceTexture); UnloadTexture(diceTexture);
//-------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------
......
...@@ -19,7 +19,7 @@ void Graphic_MouseHoverNodeChooseAttacker(Player * player, Vector2 mousePosition ...@@ -19,7 +19,7 @@ void Graphic_MouseHoverNodeChooseAttacker(Player * player, Vector2 mousePosition
void Graphic_MouseHoverNodeChooseTarget(Node * originNode, Vector2 mousePosition, Panel * panel); void Graphic_MouseHoverNodeChooseTarget(Node * originNode, Vector2 mousePosition, Panel * panel);
void Graphic_RectuementBeginTurn(int screenWidth, int screenHeight, Font font); void Graphic_RectuementBeginTurn(int screenWidth, int screenHeight, Font font);
int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node * originNode, Node * targetNode, Font font); int Graphic_ChooseNumberOfAttackers(Player * attacker, Player * defender, Node * originNode, Node * targetNode, Font font);
void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * targetNode, int nbOfAttackers, int * listOfDices, Font font); void diceRolling(Player * attacker, Player * defender, Node * originNode, Node * targetNode, int nbOfAttackers, int nbOfDefenders, int * listOfDices, Font font);
......
...@@ -17,6 +17,7 @@ Int_Input * Int_Input_init(char* name, int * targetInt, Rectangle inputBox){ ...@@ -17,6 +17,7 @@ Int_Input * Int_Input_init(char* name, int * targetInt, Rectangle inputBox){
} }
void Int_Input_delete(Int_Input * self){ void Int_Input_delete(Int_Input * self){
free(self->value);
free(self); free(self);
} }
......
...@@ -80,6 +80,7 @@ void Main_Menu_delete(Main_Menu * self){ ...@@ -80,6 +80,7 @@ void Main_Menu_delete(Main_Menu * self){
for(int index = 0; index < self->buttonCount; index++){ for(int index = 0; index < self->buttonCount; index++){
Menu_Button_delete(self->buttons[index]); Menu_Button_delete(self->buttons[index]);
} }
free(self->buttons);
free(self); free(self);
} }
...@@ -37,13 +37,10 @@ int main(int nbArg, char ** arg) ...@@ -37,13 +37,10 @@ int main(int nbArg, char ** arg)
{ {
int nodeCount = 10; int nodeCount = 10;
int playerCount = 3; int playerCount = 3;
NetWorld * world = malloc(sizeof(NetWorld)); NetWorld * world = malloc(sizeof(NetWorld));
Player * players = malloc(sizeof(Player)); Player * players = malloc(sizeof(Player));
Mission * missions = malloc(sizeof(Mission)); Mission * missions = malloc(sizeof(Mission));
// Game Initialization
//--------------------
Panel * panel= Panel_new();
Panel_initialize(panel, world, screenWidth, screenHeight);
// Raylib Initialization // Raylib Initialization
//---------------------- //----------------------
...@@ -92,6 +89,7 @@ int main(int nbArg, char ** arg) ...@@ -92,6 +89,7 @@ int main(int nbArg, char ** arg)
} }
break; break;
case game_ui: case game_ui:
BeginDrawing();
Panel_control(panel); Panel_control(panel);
mousePos = GetMousePosition(); mousePos = GetMousePosition();
Menu_Button_draw(gameReturn, &gameFont, screenWidth, screenHeight, RED, (screenHeight*4)/100, (screenWidth/400), true); Menu_Button_draw(gameReturn, &gameFont, screenWidth, screenHeight, RED, (screenHeight*4)/100, (screenWidth/400), true);
...@@ -104,6 +102,7 @@ int main(int nbArg, char ** arg) ...@@ -104,6 +102,7 @@ int main(int nbArg, char ** arg)
world->nodes[index].collisionHitbox.x = screenPosition.x - 24; world->nodes[index].collisionHitbox.x = screenPosition.x - 24;
world->nodes[index].collisionHitbox.y = screenPosition.y - 24; world->nodes[index].collisionHitbox.y = screenPosition.y - 24;
} }
world->winner = game_update(world, players, missions, gameFont, panel); world->winner = game_update(world, players, missions, gameFont, panel);
if(world->hasWinner){ if(world->hasWinner){
manager->display = win; manager->display = win;
...@@ -161,12 +160,13 @@ int main(int nbArg, char ** arg) ...@@ -161,12 +160,13 @@ int main(int nbArg, char ** arg)
//--------------- //---------------
NetWorld_delete(world); NetWorld_delete(world);
Player_delete(players); Players_delete(players, playerCount);
Mission_delete(missions); Mission_delete(missions);
Main_Menu_delete(menu); Main_Menu_delete(menu);
Main_Menu_delete(rulesMenu); Main_Menu_delete(rulesMenu);
Options_Menu_delete(optionsMenu); Options_Menu_delete(optionsMenu);
Window_Manager_delete(manager); Window_Manager_delete(manager);
Panel_delete(panel);
UnloadFont(gameFont); UnloadFont(gameFont);
CloseWindow(); // Close window and OpenGL context CloseWindow(); // Close window and OpenGL context
...@@ -232,9 +232,15 @@ int game_update(NetWorld * world, Player * players, Mission * missions, Font fon ...@@ -232,9 +232,15 @@ int game_update(NetWorld * world, Player * players, Mission * missions, Font fon
else if(Node_are_connected(originNode, currentNode) && (originNode->soldiers > 1) && originNode->canAttack){ else if(Node_are_connected(originNode, currentNode) && (originNode->soldiers > 1) && originNode->canAttack){
printf("Engagine attack on target Node\n"); printf("Engagine attack on target Node\n");
int nbOfAttackers = Graphic_ChooseNumberOfAttackers(currentPlayer, &(players[nodePlayerID]), originNode, currentNode, font); int nbOfAttackers = Graphic_ChooseNumberOfAttackers(currentPlayer, &(players[nodePlayerID]), originNode, currentNode, font);
int nbOfDefenders = currentNode->soldiers;
printf("nbOfAtackers %d \n", nbOfAttackers);
printf("nbOfdefenders %d \n", nbOfDefenders);
int * listOfDices = Player_attack_Node(currentPlayer, &(players[nodePlayerID]), originNode, currentNode, nbOfAttackers); int * listOfDices = Player_attack_Node(currentPlayer, &(players[nodePlayerID]), originNode, currentNode, nbOfAttackers);
int defendersCount = currentNode->soldiers >= 3? 2:1; for(int i = 0; i< nbOfDefenders+nbOfAttackers; i++){
diceRolling(currentPlayer, &(players[nodePlayerID]), originNode, currentNode, nbOfAttackers , listOfDices ,font); printf("listOfdices3 [%d] : %d \n",i,listOfDices[i]);
}
diceRolling(currentPlayer, &(players[nodePlayerID]), originNode, currentNode, nbOfAttackers ,nbOfDefenders, listOfDices ,font);
currentPlayer->hasSelectedNode = false;
free(listOfDices); free(listOfDices);
}else{ }else{
} }
......
...@@ -22,8 +22,8 @@ void Node_construct(Node * self) ...@@ -22,8 +22,8 @@ void Node_construct(Node * self)
self->playerID = -1; self->playerID = -1;
Rectangle tmp = {0,0,48,48}; Rectangle tmp = {0,0,48,48};
self->collisionHitbox = tmp; self->collisionHitbox = tmp;
strcpy(self->continent, "None"); self->continent = "None";
strcpy( self->name, "Node" ); self->name = "Node" ;
self->canAttack = true; self->canAttack = true;
} }
...@@ -47,6 +47,8 @@ Node * Node_newArray(int size) ...@@ -47,6 +47,8 @@ Node * Node_newArray(int size)
void Node_delete( Node * node ) void Node_delete( Node * node )
{ {
free(node->continent);
free(node->name);
Edge_deleteArray( node->card, node->edges ); Edge_deleteArray( node->card, node->edges );
free( node ); free( node );
} }
...@@ -57,7 +59,8 @@ void Node_delete( Node * node ) ...@@ -57,7 +59,8 @@ void Node_delete( Node * node )
void Node_deleteArray( int n, Node * array ) void Node_deleteArray( int n, Node * array )
{ {
for(int i= 0 ; i < n ; ++i ) for(int i= 0 ; i < n ; ++i )
Edge_deleteArray( array[i].card, array[i].edges ); Node_delete((array+i));
//Edge_deleteArray( array[i].card, array[i].edges );
free( array ); free( array );
} }
......
...@@ -41,5 +41,6 @@ void Options_Menu_delete(Options_Menu * self){ ...@@ -41,5 +41,6 @@ void Options_Menu_delete(Options_Menu * self){
for(int index = 0; index < self->inputCount; index++){ for(int index = 0; index < self->inputCount; index++){
Int_Input_delete(self->inputs[index]); Int_Input_delete(self->inputs[index]);
} }
free(self->inputs);
free(self); free(self);
} }
\ No newline at end of file
...@@ -33,9 +33,14 @@ Player * Player_newArray(int size, Color color[]) ...@@ -33,9 +33,14 @@ Player * Player_newArray(int size, Color color[])
return p; return p;
} }
void Player_delete( Player * player ) void Players_delete(Player * player, int size)
{ {
free( player ); for(int i = 0 ; i < size ; i++){
free((player+i)->nodes);
free((player+i)->selectedNode);
free((player+i));
}
free(player);
} }
void Player_add_Node( Player * self, Node * node ) void Player_add_Node( Player * self, Node * node )
...@@ -153,7 +158,7 @@ void Player_confirm_recrutement(Player * self){ ...@@ -153,7 +158,7 @@ void Player_confirm_recrutement(Player * self){
int * Player_attack_Node(Player * self, Player * defender, Node * originNode, Node * targetNode, int numberOfAttackers){ int * Player_attack_Node(Player * self, Player * defender, Node * originNode, Node * targetNode, int numberOfAttackers){
int * listOfDices = malloc(20*sizeof(int)); int * listOfDices = malloc(20*sizeof(int));
int attackersCount = numberOfAttackers; int attackersCount = numberOfAttackers;
int defendersCount = targetNode->soldiers >= 3? 2:1; int defendersCount = targetNode->soldiers;
int attDiceRolls[attackersCount]; int attDiceRolls[attackersCount];
int defDiceRolls[defendersCount]; int defDiceRolls[defendersCount];
...@@ -226,6 +231,9 @@ int * Player_attack_Node(Player * self, Player * defender, Node * originNode, No ...@@ -226,6 +231,9 @@ int * Player_attack_Node(Player * self, Player * defender, Node * originNode, No
} }
originNode->canAttack = false; originNode->canAttack = false;
for(int i = 0; i< defendersCount+attackersCount; i++){
printf("listOfdices2 [%d] : %d \n",i,listOfDices[i]);
}
return listOfDices; return listOfDices;
} }
......
...@@ -49,9 +49,11 @@ Player * Player_newArray(int size, Color colors[]); ...@@ -49,9 +49,11 @@ Player * Player_newArray(int size, Color colors[]);
/** /**
* @brief Destructor. * @brief Destructor.
*/ */
void Player_delete( void Players_delete(
//! the Player to delete //! the Player list to delete
Player * self Player * self,
//! the Player list size to delete
int size
); );
/** /**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment