comparison tools/map/map.c @ 210:70e6ed74940d

rpg: attempt of collide detection in map
author David Demelier <markand@malikania.fr>
date Sat, 14 Nov 2020 16:59:11 +0100
parents 0a6683615c73
children adcbb7ccfdee
comparison
equal deleted inserted replaced
209:23a844fdc911 210:70e6ed74940d
255 write_layer(layer); 255 write_layer(layer);
256 } 256 }
257 } 257 }
258 258
259 static void 259 static void
260 write_tileset_tile(const json_t *tile)
261 {
262 const json_t *id = json_object_get(tile, "id");
263 const json_t *objectgroup = json_object_get(tile, "objectgroup");
264 const json_t *objects = json_object_get(objectgroup, "objects");
265 const json_t *first = json_array_get(objects, 0);
266 const json_t *x, *y, *w, *h;
267
268 if (!json_is_integer(id))
269 die("invalid 'id' property in tile\n");
270 if (!json_is_object(objectgroup))
271 die("invalid 'objectgroup' property in tile\n");
272 if (!json_is_array(objects))
273 die("invalid 'objects' property in tile\n");
274
275 x = json_object_get(first, "x");
276 y = json_object_get(first, "y");
277 w = json_object_get(first, "width");
278 h = json_object_get(first, "height");
279
280 if (!json_is_integer(x) || !json_is_integer(y) ||
281 !json_is_integer(w) || !json_is_integer(h))
282 die("invalid collide object in tile description\n");
283
284 printf("%lld|%lld|%lld|%lld|%lld\n",
285 json_integer_value(id),
286 json_integer_value(x),
287 json_integer_value(y),
288 json_integer_value(w),
289 json_integer_value(h));
290 }
291
292 static void
293 write_tileset_tiles(const json_t *tiles)
294 {
295 size_t index;
296 json_t *object;
297
298 puts("tiles");
299
300 json_array_foreach(tiles, index, object) {
301 if (!json_is_object(object))
302 die("tile is not an object\n");
303
304 write_tileset_tile(object);
305 }
306 }
307
308 static void
260 write_tileset(const json_t *tileset) 309 write_tileset(const json_t *tileset)
261 { 310 {
262 json_t *image = json_object_get(tileset, "image"); 311 const json_t *image = json_object_get(tileset, "image");
312 const json_t *tiles = json_object_get(tileset, "tiles");
263 313
264 if (!image || !json_is_string(image)) 314 if (!image || !json_is_string(image))
265 die("invalid 'image' property in tileset"); 315 die("invalid 'image' property in tileset");
266 316
267 printf("tileset|%s\n", json_string_value(image)); 317 printf("tileset|%s\n", json_string_value(image));
318
319 if (json_is_array(tiles))
320 write_tileset_tiles(tiles);
268 } 321 }
269 322
270 static void 323 static void
271 write_tilesets(const json_t *tilesets) 324 write_tilesets(const json_t *tilesets)
272 { 325 {