Mercurial > molko
annotate tools/map/map.c @ 200:dd77bfb38df2
js: cleanup API
Since molko-js API isn't meant to be exposed, use duk_context everywhere by
default for a simpler code.
author | David Demelier <markand@malikania.fr> |
---|---|
date | Mon, 09 Nov 2020 19:18:14 +0100 |
parents | 0a6683615c73 |
children | 70e6ed74940d |
rev | line source |
---|---|
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
1 /* |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
2 * molko-map.c -- convert tiled tiled JSON files into custom files |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
3 * |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
4 * Copyright (c) 2020 David Demelier <markand@malikania.fr> |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
5 * |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
6 * Permission to use, copy, modify, and/or distribute this software for any |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
7 * purpose with or without fee is hereby granted, provided that the above |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
8 * copyright notice and this permission notice appear in all copies. |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
9 * |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
10 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
11 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
12 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
13 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
14 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
15 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
16 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
17 */ |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
18 |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
19 #include <assert.h> |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
20 #include <stdarg.h> |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
21 #include <stdbool.h> |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
22 #include <stdio.h> |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
23 #include <stdlib.h> |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
24 #include <stdnoreturn.h> |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
25 #include <string.h> |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
26 |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
27 #include <jansson.h> |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
28 |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
29 static void |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
30 die(const char *fmt, ...) |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
31 { |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
32 assert(fmt); |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
33 |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
34 va_list ap; |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
35 |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
36 va_start(ap, fmt); |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
37 vfprintf(stderr, fmt, ap); |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
38 va_end(ap); |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
39 exit(1); |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
40 } |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
41 |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
42 static bool |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
43 is_layer(const char *name) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
44 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
45 return strcmp(name, "background") == 0 || |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
46 strcmp(name, "foreground") == 0 || |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
47 strcmp(name, "objects") == 0; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
48 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
49 |
93
d4a72fa16225
misc: miscellaneous issues
David Demelier <markand@malikania.fr>
parents:
50
diff
changeset
|
50 static const json_t * |
50
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
51 find_property(const json_t *props, const char *which) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
52 { |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
53 json_t *value; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
54 size_t index; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
55 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
56 json_array_foreach(props, index, value) { |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
57 if (!json_is_object(value)) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
58 continue; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
59 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
60 const json_t *key = json_object_get(value, "name"); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
61 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
62 if (json_is_string(key) && strcmp(json_string_value(key), which) == 0) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
63 return value; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
64 } |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
65 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
66 return NULL; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
67 } |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
68 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
69 static void |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
70 write_title(const json_t *props) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
71 { |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
72 const json_t *prop_title = find_property(props, "title"); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
73 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
74 if (!prop_title) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
75 return; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
76 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
77 const json_t *title = json_object_get(prop_title, "value"); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
78 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
79 if (title && json_is_string(title)) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
80 printf("title|%s\n", json_string_value(title)); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
81 } |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
82 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
83 static void |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
84 write_origin(const json_t *props) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
85 { |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
86 const json_t *prop_origin_x = find_property(props, "origin-x"); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
87 const json_t *prop_origin_y = find_property(props, "origin-y"); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
88 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
89 if (!prop_origin_x || !prop_origin_y) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
90 return; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
91 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
92 const json_t *origin_x = json_object_get(prop_origin_x, "value"); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
93 const json_t *origin_y = json_object_get(prop_origin_y, "value"); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
94 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
95 if (!origin_x || !json_is_integer(origin_x) || |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
96 !origin_y || !json_is_integer(origin_y)) |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
97 return; |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
98 |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
99 printf("origin|%lld|%lld\n", json_integer_value(origin_x), |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
100 json_integer_value(origin_y)); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
101 } |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
102 |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
103 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
104 write_properties(const json_t *props) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
105 { |
50
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
106 write_title(props); |
402aa7dcffe1
core: implement map origin, closes #2462 @1h
David Demelier <markand@malikania.fr>
parents:
27
diff
changeset
|
107 write_origin(props); |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
108 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
109 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
110 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
111 write_metadata(const json_t *document) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
112 { |
27
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
113 json_t *width = json_object_get(document, "width"); |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
114 json_t *height = json_object_get(document, "height"); |
27
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
115 json_t *tilewidth = json_object_get(document, "tilewidth"); |
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
116 json_t *tileheight = json_object_get(document, "tileheight"); |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
117 |
27
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
118 if (!width || !json_is_integer(width)) |
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
119 die("missing 'width' property\n"); |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
120 if (!height || !json_is_integer(height)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
121 die("missing 'height' property\n"); |
27
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
122 if (!tilewidth || !json_is_integer(tilewidth)) |
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
123 die("missing 'tilewidth' property\n"); |
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
124 if (!tileheight || !json_is_integer(tileheight)) |
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
125 die("missing 'tileheight' property\n"); |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
126 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
127 printf("width|%lld\n", json_integer_value(width)); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
128 printf("height|%lld\n", json_integer_value(height)); |
27
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
129 printf("tilewidth|%lld\n", json_integer_value(tilewidth)); |
607bd90aba63
core: finalize map converter and opener, closes #2448 @6h
David Demelier <markand@malikania.fr>
parents:
25
diff
changeset
|
130 printf("tileheight|%lld\n", json_integer_value(tileheight)); |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
131 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
132 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
133 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
134 write_object_property(int id, const json_t *property) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
135 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
136 assert(json_is_object(property)); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
137 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
138 json_t *name = json_object_get(property, "name"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
139 json_t *type = json_object_get(property, "type"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
140 json_t *value = json_object_get(property, "value"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
141 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
142 if (!name || !json_is_string(name)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
143 die("invalid 'name' property in object"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
144 if (!type || !json_is_string(type)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
145 die("invalid 'type' property in object"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
146 if (!value || !json_is_string(value)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
147 die("invalid 'value' property in object"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
148 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
149 printf("object-property|%d|%s|%s\n", |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
150 id, |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
151 json_string_value(name), |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
152 json_string_value(value) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
153 ); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
154 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
155 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
156 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
157 write_object(const json_t *object) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
158 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
159 assert(json_is_object(object)); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
160 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
161 json_t *id = json_object_get(object, "id"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
162 json_t *x = json_object_get(object, "x"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
163 json_t *y = json_object_get(object, "y"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
164 json_t *width = json_object_get(object, "width"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
165 json_t *height = json_object_get(object, "height"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
166 json_t *type = json_object_get(object, "type"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
167 json_t *props = json_object_get(object, "properties"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
168 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
169 if (!id || !json_is_integer(id)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
170 die("invalid 'id' property in object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
171 if (!x || !json_is_real(x)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
172 die("invalid 'x' property in object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
173 if (!y || !json_is_real(y)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
174 die("invalid 'y' property in object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
175 if (!width || !json_is_real(width)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
176 die("invalid 'width' property in object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
177 if (!height || !json_is_real(height)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
178 die("invalid 'height' property in object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
179 if (!type || !json_is_string(type)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
180 die("invalid 'type' property in object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
181 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
182 /* In tiled, those properties are float but we only use ints in MA */ |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
183 printf("object|%lld|%s|%d|%d|%d|%d\n", |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
184 json_integer_value(id), |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
185 json_string_value(type), |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
186 (int)json_real_value(x), |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
187 (int)json_real_value(y), |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
188 (int)json_real_value(width), |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
189 (int)json_real_value(height) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
190 ); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
191 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
192 if (json_is_array(props)) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
193 json_t *prop; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
194 size_t index; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
195 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
196 json_array_foreach(props, index, prop) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
197 if (!json_is_object(prop)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
198 die("invalid property in object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
199 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
200 write_object_property(json_integer_value(id), prop); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
201 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
202 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
203 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
204 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
205 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
206 write_layer(const json_t *layer) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
207 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
208 json_t *objects = json_object_get(layer, "objects"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
209 json_t *data = json_object_get(layer, "data"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
210 json_t *name = json_object_get(layer, "name"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
211 json_t *tile, *object; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
212 size_t index; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
213 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
214 if (!name || !json_is_string(name)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
215 die("invalid 'name' property in layer"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
216 if (!is_layer(json_string_value(name))) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
217 die("invalid 'name' layer: %s\n", json_string_value(name)); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
218 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
219 printf("layer|%s\n", json_string_value(name)); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
220 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
221 /* Only foreground/background have 'data' property */ |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
222 if (json_is_array(data)) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
223 json_array_foreach(data, index, tile) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
224 if (!json_is_integer(tile)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
225 die("invalid 'data' property in layer\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
226 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
227 printf("%lld\n", json_integer_value(tile)); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
228 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
229 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
230 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
231 /* Only objects has 'objects' property */ |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
232 if (json_is_array(objects)) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
233 json_array_foreach(objects, index, object) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
234 if (!json_is_object(object)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
235 die("invalid 'objects' property in layer\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
236 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
237 write_object(object); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
238 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
239 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
240 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
241 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
242 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
243 write_layers(const json_t *layers) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
244 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
245 size_t index; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
246 json_t *layer; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
247 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
248 if (!layers) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
249 return; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
250 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
251 json_array_foreach(layers, index, layer) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
252 if (!json_is_object(layer)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
253 die("layer is not an object\n"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
254 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
255 write_layer(layer); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
256 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
257 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
258 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
259 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
260 write_tileset(const json_t *tileset) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
261 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
262 json_t *image = json_object_get(tileset, "image"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
263 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
264 if (!image || !json_is_string(image)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
265 die("invalid 'image' property in tileset"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
266 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
267 printf("tileset|%s\n", json_string_value(image)); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
268 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
269 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
270 static void |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
271 write_tilesets(const json_t *tilesets) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
272 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
273 json_t *tileset; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
274 size_t index; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
275 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
276 if (!json_is_array(tilesets)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
277 die("invalid 'tilesets' property"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
278 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
279 json_array_foreach(tilesets, index, tileset) { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
280 if (!json_is_object(tileset)) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
281 die("invalid tileset"); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
282 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
283 write_tileset(tileset); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
284 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
285 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
286 |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
287 int |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
288 main(void) |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
289 { |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
290 json_t *document; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
291 json_error_t error; |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
292 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
293 document = json_loadf(stdin, 0, &error); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
294 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
295 if (!document) |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
296 die("%d:%d: %s\n", error.line, error.column, error.text); |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
297 |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
298 write_properties(json_object_get(document, "properties")); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
299 write_metadata(document); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
300 write_layers(json_object_get(document, "layers")); |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
301 write_tilesets(json_object_get(document, "tilesets")); |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
302 |
25
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
303 json_decref(document); |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
304 } |