void writeMapEditor(editorRoom_struct* er, const char* str) { if(!er)return; FILE* f=fopen(str,"wb+"); // if(!f)return; mapHeader_struct h=blankHeader; writeHeader(&h,f); room_struct r; lightingData_struct* ld=&r.lightingData; initRoom(&r, 0, 0, vect(0,0,0)); rectangleList_struct sludgeList; r.rectangles=generateOptimizedRectangles(er->blockArray, &sludgeList); generateLightsFromEntities(); // generateLightmaps(&r, ld); generateVertexLighting(&r, ld); h.dataPosition=ftell(f); u8* compressed=compressBlockArray(er->blockArray, &h.dataSize); // decompress(compressed, er->blockArray, RLE); if(!compressed){return;} //TEMP : clean up first ! NOGBA("DATASIZE %d",h.dataSize); fwrite(compressed,sizeof(u8),h.dataSize*2,f); free(compressed); h.rectanglesPosition=ftell(f); writeRectangleList(&r.rectangles, f); h.lightPosition=ftell(f); writeLightingData(ld, f); h.entityPosition=ftell(f); writeEntities(f); h.sludgePosition=ftell(f); writeRectangleList(&sludgeList, f); writeHeader(&h,f); //empty sludgelist here while(sludgeList.num)popRectangle(&sludgeList); freeRoom(&r); fclose(f); }
void removeRoomRectangles(room_s* r) { while(r->rectangles.num)popRectangle(&r->rectangles); }