Mercurial > molko
annotate tools/molko-map.c @ 25:0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
author | David Demelier <markand@malikania.fr> |
---|---|
date | Fri, 10 Jan 2020 20:08:26 +0100 |
parents | 621c815c9509 |
children | 607bd90aba63 |
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 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
50 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
|
51 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
|
52 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
53 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
|
54 json_t *prop, *name, *type, *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
|
55 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
56 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
|
57 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
|
58 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
59 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
|
60 name = json_object_get(prop, "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
|
61 type = json_object_get(prop, "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
|
62 value = json_object_get(prop, "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
|
63 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
64 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
|
65 !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
|
66 !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
|
67 !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
|
68 die("invalid property\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
|
69 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
70 printf("%s|%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
|
71 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
|
72 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
73 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
74 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
75 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
|
76 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
|
77 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
78 json_t *height = json_object_get(document, "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
|
79 json_t *width = json_object_get(document, "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
|
80 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
81 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
|
82 die("missing 'height' property\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
|
83 if (!width || !json_is_integer(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
|
84 die("missing 'width' property\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
|
85 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
86 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
|
87 printf("height|%lld\n", json_integer_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
|
88 } |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
89 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
90 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
|
91 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
|
92 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
93 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
|
94 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
95 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
|
96 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
|
97 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
|
98 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
99 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
|
100 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
|
101 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
|
102 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
|
103 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
|
104 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
|
105 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
106 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
|
107 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
|
108 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
|
109 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
|
110 ); |
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 } |
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 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
113 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
|
114 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
|
115 { |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
116 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
|
117 |
0d5ecefcccd3
molko-map: reimplement using JSON as it is supported by tiled, closes #2448 @4h
David Demelier <markand@malikania.fr>
parents:
16
diff
changeset
|
118 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
|
119 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
|
120 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
|
121 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
|
122 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
|
123 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
|
124 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
|
125 |
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 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
|
127 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
|
128 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
|
129 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
|
130 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
|
131 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
|
132 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
|
133 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
|
134 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
|
135 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
|
136 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
|
137 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
|
138 |
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 /* 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
|
140 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
|
141 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
|
142 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
|
143 (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
|
144 (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
|
145 (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
|
146 (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
|
147 ); |
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 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
|
150 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
|
151 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
|
152 |
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 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
|
154 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
|
155 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
|
156 |
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_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
|
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 } |
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 |
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 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
|
163 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
|
164 { |
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 *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
|
166 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
|
167 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
|
168 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
|
169 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
|
170 |
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 (!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
|
172 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
|
173 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
|
174 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
|
175 |
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 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
|
177 |
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 /* 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
|
179 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
|
180 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
|
181 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
|
182 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
|
183 |
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 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
|
185 } |
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 } |
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 |
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 /* 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
|
189 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
|
190 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
|
191 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
|
192 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
|
193 |
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 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
|
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 } |
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 } |
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 |
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 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
|
200 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
|
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 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
|
203 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
|
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 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
|
206 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
|
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_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
|
209 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
|
210 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
|
211 |
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 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
|
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 } |
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 |
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 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
|
217 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
|
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 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
|
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 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
|
222 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
|
223 |
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 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
|
225 } |
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 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
|
228 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
|
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 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
|
231 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
|
232 |
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 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
|
234 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
|
235 |
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 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
|
237 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
|
238 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
|
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 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
|
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 } |
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 |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
244 int |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
245 main(void) |
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
246 { |
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
|
247 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
|
248 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
|
249 |
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 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
|
251 |
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 (!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
|
253 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
|
254 |
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
|
255 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
|
256 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
|
257 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
|
258 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
|
259 |
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
|
260 json_decref(document); |
16
621c815c9509
tools: implement basic molko-map stub, continue #2448
David Demelier <markand@malikania.fr>
parents:
diff
changeset
|
261 } |