Advertisement
Guest User

Untitled

a guest
Nov 23rd, 2014
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.06 KB | None | 0 0
  1. Room new_Room(SDL_Renderer *renderer, ResourceManager rm, Window window, Sprite bg, char *mapname)
  2. {
  3.     Room ret = malloc(sizeof(struct Room_s));
  4.     assert(renderer);
  5.     ret->renderer = renderer;
  6.     assert(window);
  7.     ret->window = window;
  8.     ret->toReact= new_List(0);
  9.     ret->entities = new_List(0);
  10.     ret->background = bg;
  11.  
  12.     ret->gravity = cpv(0, -200);
  13.  
  14.     ret->sox = ret->soy = 0;
  15.  
  16.     ret->space = cpSpaceNew();
  17.     cpSpaceSetGravity(ret->space, ret->gravity);
  18.  
  19.     // room's ready, now to populate it
  20.  
  21.     json_t *maproot, *entities;
  22.     json_error_t jerror;
  23.  
  24.     maproot = json_load_file(mapname, 0, &jerror);
  25.     json_check(maproot, jerror);
  26.     assert(json_is_object(maproot));
  27.  
  28.     ret->width = json_integer_value(json_object_get(maproot, "w"));
  29.     ret->height = json_integer_value(json_object_get(maproot, "h"));
  30.     entities = json_object_get(maproot, "entities");
  31.                      
  32.  
  33.     for (unsigned int i = 0; i < json_array_size(entities); i++)
  34.     {
  35.     json_t *elem, *args, *typeo;
  36.     char *type;
  37.     elem = json_array_get(entities, i);
  38.  
  39.     assert(json_is_object(elem));
  40.  
  41.     typeo = json_object_get(elem, "type");
  42.     assert(json_is_string(typeo));
  43.  
  44.     type = (char*)json_string_value(typeo);
  45.  
  46.     if (strcmp(type, "player") == 0)
  47.         List_enqueue(ret->entities, new_Player(rm, ret,
  48.                             json_integer_value(
  49.                             json_object_get(elem, "x")),
  50.                             json_integer_value(
  51.                             json_object_get(elem, "y"))));
  52.     else if (strcmp(type, "box") == 0)
  53.         List_enqueue(ret->entities, new_Box(rm, ret,
  54.                             json_integer_value(
  55.                             json_object_get(elem, "x")),
  56.                             json_integer_value(
  57.                             json_object_get(elem, "y")),
  58.                              json_real_value(
  59.                              json_object_get(elem, "angle"))));
  60.     else if (strcmp(type, "platform") == 0)
  61.         List_enqueue(ret->entities, new_Platform(rm, ret,
  62.                             json_integer_value(
  63.                             json_object_get(elem, "x")),
  64.                             json_integer_value(
  65.                             json_object_get(elem, "y")),
  66.                              json_real_value(
  67.                              json_object_get(elem, "angle"))));
  68.     }
  69.  
  70.     return ret;
  71. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement