diff options
author | neoraider <devnull@localhost> | 2007-06-21 21:52:03 +0200 |
---|---|---|
committer | neoraider <devnull@localhost> | 2007-06-21 21:52:03 +0200 |
commit | 84361f7a9e03f76e7ea90f48239825dc5bca07e9 (patch) | |
tree | 60eb7a4611cef032d0d4689f2fc19a769353c8e1 /level.c | |
download | zoomedit-84361f7a9e03f76e7ea90f48239825dc5bca07e9.tar zoomedit-84361f7a9e03f76e7ea90f48239825dc5bca07e9.zip |
zoomedit: Added level editor zoomedit.
Diffstat (limited to 'level.c')
-rw-r--r-- | level.c | 69 |
1 files changed, 69 insertions, 0 deletions
@@ -0,0 +1,69 @@ +#include "level.h" +#include <stdlib.h> + + +void addRoom(LEVEL *lvl, ROOM *room) { + lvl->nRooms++; + lvl->rooms = realloc(lvl->rooms, lvl->nRooms*sizeof(ROOM)); + lvl->rooms[lvl->nRooms-1] = *room; +} + +void deleteRoom(LEVEL *lvl, unsigned int n) { + int i; + + lvl->nRooms--; + + for(i = n; i < lvl->nRooms; i++) + lvl->rooms[i] = lvl->rooms[i+1]; + + lvl->rooms = realloc(lvl->rooms, lvl->nRooms*sizeof(ROOM)); +} + +void addVertex(ROOM *room, VERTEX *v) { + room->nVertices++; + room->vertices = realloc(room->vertices, room->nVertices*sizeof(VERTEX)); + room->vertices[room->nVertices-1] = *v; +} + +void insertVertex(ROOM *room, VERTEX *v, unsigned int n) { + int i; + + if(n > room->nVertices) + n = room->nVertices; + + room->nVertices++; + room->vertices = realloc(room->vertices, room->nVertices*sizeof(VERTEX)); + + for(i = room->nVertices-1; i > n; i--) + room->vertices[i] = room->vertices[i-1]; + + room->vertices[n] = *v; +} + +void deleteVertex(ROOM *room, unsigned int n) { + int i; + + room->nVertices--; + + for(i = n; i < room->nVertices; i++) + room->vertices[i] = room->vertices[i+1]; + + room->vertices = realloc(room->vertices, room->nVertices*sizeof(VERTEX)); +} + +void freeLevel(LEVEL *lvl) { + int i; + + if(lvl) { + if(lvl->rooms) { + for(i = 0; i < lvl->nRooms; i++) { + if(lvl->rooms[i].vertices) + free(lvl->rooms[i].vertices); + } + + free(lvl->rooms); + } + + free(lvl); + } +} |