game.c 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  1. /*
  2. * File: game.c
  3. * Author: Arthur Brandao
  4. *
  5. * Created on 28 novembre 2018
  6. */
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include "file.h"
  10. #include "game.h"
  11. /* --- Extern --- */
  12. Game game[MAXGAME];
  13. int nbGame = 0;
  14. /* --- Fonctions publiques --- */
  15. void ini_games(){
  16. for(int i = 0; i < MAXGAME; i++){
  17. game[i].active = false;
  18. }
  19. }
  20. JsonArray* list_map(){
  21. char** result;
  22. int nbResult;
  23. JsonArray* ja;
  24. //Initialisation json
  25. ja = malloc(sizeof(JsonArray));
  26. ini_array_encoder(ja);
  27. //Regarde les fichiers dans le dossier
  28. result = file_list(MAPDIR, &nbResult);
  29. for(int i = 0; i < nbResult; i++){
  30. add_array_string(ja, result[i]);
  31. free(result[i]);
  32. }
  33. free(result);
  34. return ja;
  35. }
  36. JsonArray* list_game(){
  37. JsonArray* ja;
  38. int compteur = 0, i = 0;
  39. //Si il n' y a aucune game
  40. if(nbGame == 0){
  41. return NULL;
  42. }
  43. //Initialisation json
  44. ja = malloc(sizeof(JsonArray));
  45. ini_array_encoder(ja);
  46. //Ajoute chaque game
  47. while(compteur < nbGame && i < MAXGAME){
  48. if(!game[i].active){
  49. i++;
  50. continue;
  51. }
  52. //Creation objet json
  53. JsonEncoder je;
  54. ini_encoder(&je);
  55. add_string(&je, "name", game[i].name);
  56. add_integer(&je, "nbPlayer", game[i].nbPlayer);
  57. add_string(&je, "map", game[i].mapName);
  58. //Ajout dans le tableau
  59. add_array_object(ja, &je);
  60. //Suppr encoder objet
  61. clean_json_encoder(&je);
  62. //Incremente
  63. i++;
  64. compteur++;
  65. }
  66. return ja;
  67. }
  68. int* map_size(char* map){
  69. int* res;
  70. res = malloc(sizeof(int) * 2);
  71. res[WIDTH] = 0;
  72. res[HEIGHT] = 1;
  73. //Parcours la 1er ligne pour compter le nombre de caractère
  74. while(*map != '\n' && *map != '\0'){
  75. res[WIDTH]++;
  76. map++;
  77. }
  78. if(*map == '\0'){
  79. return res;
  80. }
  81. //Compte les lignes
  82. map++;
  83. while(*map != '\0'){
  84. if(*map == '\n'){
  85. res[HEIGHT]++;
  86. }
  87. map++;
  88. }
  89. return res;
  90. }
  91. /**
  92. * Associe une map à une game
  93. * @param Game* La game à associé à la map
  94. * @param char* Le nom de la map
  95. */
  96. void get_map(Game*, char*);