Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Room new_Room(SDL_Renderer *renderer, ResourceManager rm, Window window, Sprite bg, char *mapname)
- {
- Room ret = malloc(sizeof(struct Room_s));
- assert(renderer);
- ret->renderer = renderer;
- assert(window);
- ret->window = window;
- ret->toReact= new_List(0);
- ret->entities = new_List(0);
- ret->background = bg;
- ret->gravity = cpv(0, -200);
- ret->sox = ret->soy = 0;
- ret->space = cpSpaceNew();
- cpSpaceSetGravity(ret->space, ret->gravity);
- // room's ready, now to populate it
- json_t *maproot, *entities;
- json_error_t jerror;
- maproot = json_load_file(mapname, 0, &jerror);
- json_check(maproot, jerror);
- assert(json_is_object(maproot));
- ret->width = json_integer_value(json_object_get(maproot, "w"));
- ret->height = json_integer_value(json_object_get(maproot, "h"));
- entities = json_object_get(maproot, "entities");
- for (unsigned int i = 0; i < json_array_size(entities); i++)
- {
- json_t *elem, *args, *typeo;
- char *type;
- elem = json_array_get(entities, i);
- assert(json_is_object(elem));
- typeo = json_object_get(elem, "type");
- assert(json_is_string(typeo));
- type = (char*)json_string_value(typeo);
- if (strcmp(type, "player") == 0)
- List_enqueue(ret->entities, new_Player(rm, ret,
- json_integer_value(
- json_object_get(elem, "x")),
- json_integer_value(
- json_object_get(elem, "y"))));
- else if (strcmp(type, "box") == 0)
- List_enqueue(ret->entities, new_Box(rm, ret,
- json_integer_value(
- json_object_get(elem, "x")),
- json_integer_value(
- json_object_get(elem, "y")),
- json_real_value(
- json_object_get(elem, "angle"))));
- else if (strcmp(type, "platform") == 0)
- List_enqueue(ret->entities, new_Platform(rm, ret,
- json_integer_value(
- json_object_get(elem, "x")),
- json_integer_value(
- json_object_get(elem, "y")),
- json_real_value(
- json_object_get(elem, "angle"))));
- }
- return ret;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement