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
-// map->layerdata = malloc(sizeof(byte*) * t[i].size);\r
+ //map->layerdata = malloc(sizeof(byte*) * t[i].size);\r
inner_end = t[i].end;\r
k = 0;\r
while(t[i].start < inner_end) {\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] = malloc(sizeof(byte) * t[i+1].size);\r
- //for backwards compatibility for rest of code\r
- map->data = map->layerdata[k];\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
for(j = 0; j < t[i+1].size; j++) {\r
- map->layerdata[k][j] = (byte)atoi(js + t[i+2+j].start);\r
+ //map->layerdata[k][j] = (byte)atoi(js + t[i+2+j].start);\r
+ map->layerdata[k].data[j] = (byte)atoi(js + t[i+2+j].start);\r
#ifdef DEBUG_MAPDATA\r
//printf("[%d,%d]%d", k, j, map->MAPDATAPTK[j]);\r
printf("%c", map->MAPDATAPTK[j]+44);\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
k = 0;\r
while(t[i].start < inner_end) {\r
if(jsoneq(js, &(t[i]), "image") == 0) {\r
- map->MAPTILESPTK = malloc(sizeof(tiles_t));\r
+ map->tiles = malloc(sizeof(tiles_t));\r
s = remove_ext((char *)js+t[i+1].start, '.', '/');\r
- strcpy(map->MAPTILESPTK->imgname, s);\r
+ strcpy(map->tiles->imgname, s);\r
//And move to vrs, probably\r
// bp = bitmapLoadPcx("data/ed.pcx");\r
-// map->MAPTILESPTK->btdata = &bp;\r
- //map->MAPTILESPTK->btdata = malloc(sizeof(bitmap_t));\r
- map->MAPTILESPTK->rows = 1;\r
- map->MAPTILESPTK->cols = 1;\r
+// map->tiles->btdata = &bp;\r
+ //map->tiles->btdata = malloc(sizeof(bitmap_t));\r
+ map->tiles->rows = 1;\r
+ map->tiles->cols = 1;\r
#ifdef __DEBUG_MAP__\r
dbg_maptext=false;\r
#endif\r
i++;\r
}else if(jsoneq(js, &(t[i]), "tileheight") == 0) {\r
- map->MAPTILESPTK->tileHeight = atoi(js + t[i+1].start);\r
+ map->tiles->tileHeight = atoi(js + t[i+1].start);\r
+#ifdef DEBUG_MAPVAR\r
+ printf("Tile Height: %d\n", map->tiles->tileHeight);\r
+#endif\r
i++;\r
}else if(jsoneq(js, &(t[i]), "tilewidth") == 0) {\r
- map->MAPTILESPTK->tileWidth = atoi(js + t[i+1].start);\r
+ map->tiles->tileWidth = atoi(js + t[i+1].start);\r
+#ifdef DEBUG_MAPVAR\r
+ printf("Tile Width: %d\n", map->tiles->tileWidth);\r
+#endif\r
i++;\r
}\r
i++;\r