player.c 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. /*
  2. * File: player.c
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 28 novembre 2018
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include "player.h"
  10. void create_player(Player* p, Client* c){
  11. //Initialisation valeurs
  12. p->ini = true;
  13. p->id = c->id;
  14. p->cli = c;
  15. p->x = 1;
  16. p->y = 1;
  17. p->life = 100;
  18. p->maxLife = 100;
  19. p->speed = 1;
  20. p->classicBomb = 1;
  21. p->mine = 0;
  22. p->remoteBomb = 0;
  23. p->maxBomb = 2;
  24. p->bombUp = 0;
  25. p->bombDown = 0;
  26. p->firePower = 0;
  27. p->scooter = 0;
  28. p->brokenLeg = 0;
  29. p->lifeMax = 0;
  30. p->lifeUp = 0;
  31. p->major = 0;
  32. }
  33. void describe_player(Player* p, JsonEncoder* desc){
  34. JsonEncoder* bonus = malloc(sizeof(JsonEncoder));
  35. JsonArray* bm = malloc(sizeof(JsonArray));
  36. /*JsonArray* bonus = malloc(sizeof(JsonArray));
  37. char buffer[BUFFER_SIZE];*/
  38. //Initialisation
  39. ini_encoder(desc);
  40. ini_encoder(bonus);
  41. ini_array_encoder(bm);
  42. //Calcul bonus malus
  43. if(p->bombUp > 0){
  44. add_string(bonus, "class", "bomb_up");
  45. add_integer(bonus, "number", p->bombUp);
  46. add_array_object(bm, bonus);
  47. clean_json_encoder(bonus);
  48. }
  49. if(p->bombDown > 0){
  50. add_string(bonus, "class", "bomb_down");
  51. add_integer(bonus, "number", p->bombDown);
  52. add_array_object(bm, bonus);
  53. }
  54. if(p->firePower > 0){
  55. add_string(bonus, "class", "fire_power");
  56. add_integer(bonus, "number", p->firePower);
  57. add_array_object(bm, bonus);
  58. clean_json_encoder(bonus);
  59. }
  60. if(p->scooter > 0){
  61. add_string(bonus, "class", "scooter");
  62. add_integer(bonus, "number", p->scooter);
  63. add_array_object(bm, bonus);
  64. clean_json_encoder(bonus);
  65. }
  66. if(p->brokenLeg > 0){
  67. add_string(bonus, "class", "broken_leg");
  68. add_integer(bonus, "number", p->brokenLeg);
  69. add_array_object(bm, bonus);
  70. clean_json_encoder(bonus);
  71. }
  72. if(p->lifeUp > 0){
  73. add_string(bonus, "class", "life_up");
  74. add_integer(bonus, "number", p->lifeUp);
  75. add_array_object(bm, bonus);
  76. clean_json_encoder(bonus);
  77. }
  78. if(p->lifeMax > 0){
  79. add_string(bonus, "class", "life_max");
  80. add_integer(bonus, "number", p->lifeMax);
  81. add_array_object(bm, bonus);
  82. clean_json_encoder(bonus);
  83. }
  84. if(p->major > 0){
  85. add_string(bonus, "class", "major");
  86. add_integer(bonus, "number", p->major);
  87. add_array_object(bm, bonus);
  88. clean_json_encoder(bonus);
  89. }
  90. //Ajout valeur
  91. add_integer(desc, "id", p->id);
  92. add_integer(desc, "life", p->life);
  93. add_integer(desc, "maxLife", p->maxLife);
  94. add_integer(desc, "speed", p->speed);
  95. add_integer(desc, "currentNbClassicBomb", p->classicBomb);
  96. add_integer(desc, "currentNbMine", p->mine);
  97. add_integer(desc, "currentNbRemoteBomb", p->remoteBomb);
  98. add_integer(desc, "maxNbBomb", p->maxBomb);
  99. add_array(desc, "bonus-malus", bm);
  100. //Nettoyage
  101. clean_json_array(bm);
  102. free(bonus);
  103. free(bm);
  104. }
  105. void describe_short_player(Player* p, JsonEncoder* desc){
  106. char pos[40];
  107. //Creation chaine
  108. memset(pos, 0, 40);
  109. snprintf(pos, 40, "%d,%d", p->x, p->y);
  110. //Creation JSON
  111. ini_encoder(desc);
  112. add_integer(desc, "id", p->id);
  113. add_string(desc, "pos", pos);
  114. }
  115. void delete_player(Player* p){
  116. p->cli = NULL;
  117. p->ini = false;
  118. }