void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) {\r
int i, j, k, indent=0, inner_end;\r
char *s;\r
+ boolean objlay=0;\r
//bitmap_t bp;\r
\r
i = 0;\r
+#define MAPLNAMESIZE t[i+1].end - t[i+1].start\r
while(i<count) {\r
if(jsoneq(js, &(t[i]), "layers") == 0) {\r
i++;\r
#ifdef DEBUG_DUMPVARS\r
printf("t[%d].start=%d, %d\n", i, t[i].start, inner_end);\r
#endif\r
+ if(!objlay){\r
if(jsoneq(js, &(t[i]), "data") == 0) {\r
#ifdef DEBUG_MAPDATA\r
- printf("Layer %d data: [\n", k);\r
+ printf("Layer %d data: (size is %d)[\n", k, t[i+1].size);\r
#endif\r
map->layerdata[k].data = malloc(sizeof(byte) * t[i+1].size);\r
// map->data = (map->layerdata[k].data); //for backwards compatibility for rest of code\r
#endif\r
}\r
i += j + 2;\r
- k++;\r
#ifdef DEBUG_MAPDATA\r
puts("\n]");\r
#endif\r
- }else{\r
- i++;\r
+ }else if(jsoneq(js, &(t[i]), "name") == 0) {\r
+#ifdef DEBUG_MAPDATA\r
+ printf("Layer %d's name: (size is %d)[\n", k, MAPLNAMESIZE);\r
+#endif\r
+ map->layerdata[k].layername = malloc(sizeof(byte) * MAPLNAMESIZE);\r
+ strncpy(map->layerdata[k].layername, js+t[i+1].start, MAPLNAMESIZE);\r
+ if(map->layerdata[k].layername[MAPLNAMESIZE]!=0) map->layerdata[k].layername[MAPLNAMESIZE]='\0';\r
+ if(strstr(map->layerdata[k].layername, "ob")) objlay=1;\r
+#ifdef DEBUG_MAPDATA\r
+ printf("%s", map->layerdata[k].layername);\r
+ printf("\n]\n");\r
+#endif\r
+ k++;\r
+ }\r
+ }else{ //objlay\r
+ if(jsoneq(js, &(t[i]), "objects") == 0) {\r
+#ifdef DEBUG_MAPDATA\r
+ printf("objects detected\n");\r
+#endif\r
+// map->layerdata[k].layername = malloc(sizeof(byte) * MAPLNAMESIZE);\r
+// strncpy(map->layerdata[k].layername, js+t[i+1].start, MAPLNAMESIZE);\r
+// if(map->layerdata[k].layername[MAPLNAMESIZE]!=0) map->layerdata[k].layername[MAPLNAMESIZE]='\0';\r
+ }else if(jsoneq(js, &(t[i]), "name") == 0) {\r
+#ifdef DEBUG_MAPDATA\r
+ printf("Object %d's name: (size is %d)[\n", k, MAPLNAMESIZE);\r
+ printf("'%.*s'", t[i+1].end - t[i+1].start, js+t[i+1].start);\r
+ printf("\n]\n");\r
+#endif\r
+ }\r
}\r
+ i++;\r
}\r
}\r
+\r
+\r
if(jsoneq(js, &(t[i]), "tilesets") == 0) {\r
i++;\r
inner_end = t[i].end;\r