author | ecalot
<ecalot> 2004-08-30 15:33:22 UTC |
committer | ecalot
<ecalot> 2004-08-30 15:33:22 UTC |
parent | 00d8de22d310afbcc8ef0ddeead274d4497ba61f |
FP/src/include/maps.h | +1 | -1 |
FP/src/res/maps.c | +10 | -1 |
FP/src/res/resources.c | +5 | -3 |
diff --git a/FP/src/include/maps.h b/FP/src/include/maps.h index 7ba7acd..1e1c033 100644 --- a/FP/src/include/maps.h +++ b/FP/src/include/maps.h @@ -44,7 +44,7 @@ maps.c: Freeprince : Map handling library /* called from reources */ void* mapLoadLevel(tMemory level); -void mapDestroy(tMap* map); +void mapFreeLevel(tMap* map); /* called from the kernel */ tRoom mapGetRoom(tMap* map, tRoomId roomId); diff --git a/FP/src/res/maps.c b/FP/src/res/maps.c index 9c6c959..388cdf7 100644 --- a/FP/src/res/maps.c +++ b/FP/src/res/maps.c @@ -358,7 +358,16 @@ void mapPressedTile(tMap* map, tTile tile, int s, int x, int y) { } } - +void mapFreeLevel(tMap* map) { + int i; + for (i=0;i<24;i++) { + free(map->screenGates[i]); + free(map->screenPressables[i]); + } + free(map->gates); + free(map->pressables); + free(map); +} diff --git a/FP/src/res/resources.c b/FP/src/res/resources.c index d6e2c91..98fe3af 100644 --- a/FP/src/res/resources.c +++ b/FP/src/res/resources.c @@ -237,12 +237,14 @@ tData* resLoad(long id) { void resFree(tData* res) { if (res->type==eImages) { - while (res->frames) { + while (res->frames) { /* free all frames */ outputFreeBitmap(res->pFrames[--(res->frames)]); } + free(res->pFrames); /* free the frame list */ + } else if (res->type==eLevels) { + mapFreeLevel((tMap*)(res->pFrames)); /* free the map */ } fprintf(stderr,"ResFree activated\n"); - free(res->pFrames); - free(res); + free(res); /* free the resource structure */ }