X-Git-Url: http://4ch.mooo.com/gitweb/?a=blobdiff_plain;f=src%2Flib%2F16_map.c;h=864d0b160f41a21208a382c44c0f059d10cc4bc2;hb=ba5025039e28bb59e7894b9d4e85a049c4c70373;hp=37179ab76d120cb44ecc0952fe6bc3bdf9e2ea1a;hpb=2f1cfb3766a0b1d5e707cc93488dbf276ed48a3e;p=16.git diff --git a/src/lib/16_map.c b/src/lib/16_map.c index 37179ab7..864d0b16 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(iMAPDATAPTK = malloc(sizeof(byte) * t[i+1].size); - //for backwards compatibility for rest of code -// map->data = map->MAPDATAPTK; + map->layerdata[k].data = malloc(sizeof(byte) * t[i+1].size); +// map->data = (map->layerdata[k].data); //for backwards compatibility for rest of code for(j = 0; j < t[i+1].size; j++) { - map->MAPDATAPTK[j] = (byte)atoi(js + t[i+2+j].start); + //map->layerdata[k][j] = (byte)atoi(js + t[i+2+j].start); + map->layerdata[k].data[j] = (byte)atoi(js + t[i+2+j].start); #ifdef DEBUG_MAPDATA //printf("[%d,%d]%d", k, j, map->MAPDATAPTK[j]); - fprintf(stdout, "%c", map->data[j]+44); + printf("%c", map->MAPDATAPTK[j]+44); + //fprintf(stdout, "%c", map->data[j]+44); #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; k = 0; while(t[i].start < inner_end) { if(jsoneq(js, &(t[i]), "image") == 0) { - map->MAPTILESPTK = malloc(sizeof(tiles_t)); + map->tiles = malloc(sizeof(tiles_t)); s = remove_ext((char *)js+t[i+1].start, '.', '/'); - strcpy(map->MAPTILESPTK->imgname, s); + strcpy(map->tiles->imgname, s); //And move to vrs, probably // bp = bitmapLoadPcx("data/ed.pcx"); -// map->MAPTILESPTK->btdata = &bp; - //map->MAPTILESPTK->btdata = malloc(sizeof(bitmap_t)); - map->MAPTILESPTK->rows = 1; - map->MAPTILESPTK->cols = 1; +// map->tiles->btdata = &bp; + //map->tiles->btdata = malloc(sizeof(bitmap_t)); + map->tiles->rows = 1; + map->tiles->cols = 1; #ifdef __DEBUG_MAP__ dbg_maptext=false; #endif i++; }else if(jsoneq(js, &(t[i]), "tileheight") == 0) { - map->MAPTILESPTK->tileHeight = atoi(js + t[i+1].start); + map->tiles->tileHeight = atoi(js + t[i+1].start); +#ifdef DEBUG_MAPVAR + printf("Tile Height: %d\n", map->tiles->tileHeight); +#endif i++; }else if(jsoneq(js, &(t[i]), "tilewidth") == 0) { - map->MAPTILESPTK->tileWidth = atoi(js + t[i+1].start); + map->tiles->tileWidth = atoi(js + t[i+1].start); +#ifdef DEBUG_MAPVAR + printf("Tile Width: %d\n", map->tiles->tileWidth); +#endif i++; } i++;