/* * File: player.c * Author: Arthur Brandao * * Created on 28 novembre 2018 */ #include #include #include "player.h" void create_player(Player* p, Client* c){ //Initialisation valeurs p->ini = true; p->id = c->id; p->cli = c; p->x = 0; p->y = 0; p->life = 100; p->maxLife = 100; p->speed = 1; p->classicBomb = 1; p->mine = 0; p->remoteBomb = 0; p->maxBomb = 2; p->bombUp = 0; p->bombDown = 0; p->firePower = 0; p->scooter = 0; p->brokenLeg = 0; p->lifeMax = 0; p->lifeUp = 0; p->major = false; } JsonEncoder* describe_player(Player* p){ JsonEncoder* desc = malloc(sizeof(JsonEncoder)); JsonArray* bonus = malloc(sizeof(JsonArray)); char buffer[BUFFER_SIZE]; //Initialisation ini_encoder(desc); ini_array_encoder(bonus); //Calcul bonus malus if(p->bombUp > 0){ memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "{\"class\": \"bomb_up\", \"number\": %d}", p->bombUp); add_array_value(bonus, buffer); } if(p->bombDown > 0){ memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "{\"class\": \"bomb_down\", \"number\": %d}", p->bombDown); add_array_value(bonus, buffer); } if(p->firePower > 0){ memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "{\"class\": \"fire_power\", \"number\": %d}", p->firePower); add_array_value(bonus, buffer); } if(p->scooter > 0){ memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "{\"class\": \"scooter\", \"number\": %d}", p->scooter); add_array_value(bonus, buffer); } if(p->brokenLeg > 0){ memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "{\"class\": \"broken_leg\", \"number\": %d}", p->brokenLeg); add_array_value(bonus, buffer); } if(p->lifeUp > 0){ memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "{\"class\": \"life_up\", \"number\": %d}", p->lifeUp); add_array_value(bonus, buffer); } if(p->lifeMax > 0){ memset(buffer, 0, BUFFER_SIZE); snprintf(buffer, BUFFER_SIZE, "{\"class\": \"life_max\", \"number\": %d}", p->lifeMax); add_array_value(bonus, buffer); } //Ajout valeur add_integer(desc, "id", p->id); add_integer(desc, "life", p->life); add_integer(desc, "maxLife", p->maxLife); add_integer(desc, "speed", p->speed); add_integer(desc, "currentNbClassicBomb", p->classicBomb); add_integer(desc, "currentNbMine", p->mine); add_integer(desc, "currentNbRemoteBomb", p->remoteBomb); add_integer(desc, "maxNbBomb", p->maxBomb); add_array(desc, "bonus-malus", bonus); //Nettoyage clean_json_array(bonus); free(bonus); return desc; } JsonEncoder* describe_short_player(Player* p){ char pos[40]; JsonEncoder* desc = malloc(sizeof(JsonEncoder)); //Creation chaine memset(pos, 0, 40); snprintf(pos, 40, "%d,%d", p->x, p->y); //Creation JSON ini_encoder(desc); add_integer(desc, "id", p->id); add_string(desc, "pos", pos); return desc; } void delete_player(Player* p){ p->cli = NULL; p->ini = false; }