Mercurial > molko
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 { |