X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_map.c;h=3bd1dbe1cab35e7c185329b1c231a8fa5b2e04e9;hb=566d8a03ca60ea3217df66bd31105209b289d981;hp=f74f46caa505af888b76b1a4b860c0a03ce10e31;hpb=9f7ffee2115e5b995c5470117e426d2c89b58979;p=16.git diff --git a/src/lib/16_map.c b/src/lib/16_map.c index f74f46ca..3bd1dbe1 100755 --- a/src/lib/16_map.c +++ b/src/lib/16_map.c @@ -251,9 +251,11 @@ again: void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) { int i, j, k, indent=0, inner_end; char *s; + boolean objlay=0; //bitmap_t bp; i = 0; +#define MAPLNAMESIZE t[i+1].end - t[i+1].start while(ilayerdata[k].data = malloc(sizeof(byte) * t[i+1].size); // map->data = (map->layerdata[k].data); //for backwards compatibility for rest of code @@ -280,15 +283,44 @@ void extract_map(const char *js, jsmntok_t *t, size_t count, map_t *map) { #endif } i += j + 2; - k++; #ifdef DEBUG_MAPDATA puts("\n]"); #endif - }else{ - i++; + }else if(jsoneq(js, &(t[i]), "name") == 0) { +#ifdef DEBUG_MAPDATA + printf("Layer %d's name: (size is %d)[\n", k, MAPLNAMESIZE); +#endif + map->layerdata[k].layername = malloc(sizeof(byte) * MAPLNAMESIZE); + strncpy(map->layerdata[k].layername, js+t[i+1].start, MAPLNAMESIZE); + if(map->layerdata[k].layername[MAPLNAMESIZE]!=0) map->layerdata[k].layername[MAPLNAMESIZE]='\0'; + if(strstr(map->layerdata[k].layername, "ob")) objlay=1; +#ifdef DEBUG_MAPDATA + printf("%s", map->layerdata[k].layername); + printf("\n]\n"); +#endif + k++; + } + }else{ //objlay + if(jsoneq(js, &(t[i]), "objects") == 0) { +#ifdef DEBUG_MAPDATA + printf("objects detected\n"); +#endif +// map->layerdata[k].layername = malloc(sizeof(byte) * MAPLNAMESIZE); +// strncpy(map->layerdata[k].layername, js+t[i+1].start, MAPLNAMESIZE); +// if(map->layerdata[k].layername[MAPLNAMESIZE]!=0) map->layerdata[k].layername[MAPLNAMESIZE]='\0'; + }else if(jsoneq(js, &(t[i]), "name") == 0) { +#ifdef DEBUG_MAPDATA + printf("Object %d's name: (size is %d)[\n", k, MAPLNAMESIZE); + printf("'%.*s'", t[i+1].end - t[i+1].start, js+t[i+1].start); + printf("\n]\n"); +#endif + } } + i++; } } + + if(jsoneq(js, &(t[i]), "tilesets") == 0) { i++; inner_end = t[i].end;