summaryrefslogtreecommitdiffstats
path: root/level.c
diff options
context:
space:
mode:
authorneoraider <devnull@localhost>2005-04-23 13:41:04 +0200
committerneoraider <devnull@localhost>2005-04-23 13:41:04 +0200
commit05f9b1d15c237e89176cc2b207454f0f30073d57 (patch)
treeccd3aa17254bca7670da5a2ab2f7202f230d3de4 /level.c
parentd836a9eb311efe71faf5c67425b25496333ab1b8 (diff)
downloadlibzoom-05f9b1d15c237e89176cc2b207454f0f30073d57.tar
libzoom-05f9b1d15c237e89176cc2b207454f0f30073d57.zip
libneofx: neofx/types.h: TRIANGLE-Struktur aufger?umt;
libzoom: zoom/types.h: WALL-Struktur als Ersatz f?r TRIANGLE eingef?gt; zoom/level.h, level.c und player.c an die neuen Strukturen angepasst
Diffstat (limited to 'level.c')
-rw-r--r--level.c92
1 files changed, 46 insertions, 46 deletions
diff --git a/level.c b/level.c
index d884341..ccee0bc 100644
--- a/level.c
+++ b/level.c
@@ -35,9 +35,9 @@ int LoadLevel(char *filename, LEVEL *level) {
for(i = 0; i < levelheader.nRooms; i++) {
fread(&roomheader, sizeof(ROOMHEADER), 1, file);
- level->rooms[i].nTriangles = roomheader.nTriangles;
- level->rooms[i].triangles = malloc(roomheader.nTriangles * sizeof(TRIANGLE));
- fread(level->rooms[i].triangles, sizeof(TRIANGLE), roomheader.nTriangles, file);
+ level->rooms[i].nWalls = roomheader.nWalls;
+ level->rooms[i].walls = malloc(roomheader.nWalls * sizeof(WALL));
+ fread(level->rooms[i].walls, sizeof(WALL), roomheader.nWalls, file);
level->rooms[i].nObjects = roomheader.nObjects;
level->rooms[i].objects = malloc(roomheader.nObjects * sizeof(OBJECT));
@@ -70,23 +70,23 @@ void DrawRoom(LEVEL *level, int room) {
int r, g;
GLfloat std_emission[] = {0.0, 0.0, 0.0, 1.0};
GLfloat medipak100_emission[] = {1.0, 0.0, 0.0, 1.0};
- TRIANGLE t1, t2;
+ WALL t1, t2;
VERTEX p1, p2;
VECTOR v1, v2;
MATRIX transform;
- for(i = 0; i < level->rooms[room].nTriangles; i++) {
- glBindTexture(GL_TEXTURE_2D, level->textures[level->rooms[room].triangles[i].texture]);
+ for(i = 0; i < level->rooms[room].nWalls; i++) {
+ glBindTexture(GL_TEXTURE_2D, level->textures[level->rooms[room].walls[i].texture]);
glBegin(GL_TRIANGLES);
- glNormal3fv((GLfloat*)&level->rooms[room].triangles[i].normal);
- glTexCoord2fv((GLfloat*)&level->rooms[room].triangles[i].texcoords[0]);
- glVertex3fv((GLfloat*)&level->rooms[room].triangles[i].vertices[0]);
- glTexCoord2fv((GLfloat*)&level->rooms[room].triangles[i].texcoords[1]);
- glVertex3fv((GLfloat*)&level->rooms[room].triangles[i].vertices[1]);
- glTexCoord2fv((GLfloat*)&level->rooms[room].triangles[i].texcoords[2]);
- glVertex3fv((GLfloat*)&level->rooms[room].triangles[i].vertices[2]);
+ glNormal3fv((GLfloat*)&level->rooms[room].walls[i].normal);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].walls[i].texcoords[0]);
+ glVertex3fv((GLfloat*)&level->rooms[room].walls[i].vertices[0]);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].walls[i].texcoords[1]);
+ glVertex3fv((GLfloat*)&level->rooms[room].walls[i].vertices[1]);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].walls[i].texcoords[2]);
+ glVertex3fv((GLfloat*)&level->rooms[room].walls[i].vertices[2]);
glEnd();
}
@@ -109,37 +109,37 @@ void DrawRoom(LEVEL *level, int room) {
for(i = 0; i < level->rooms[room].nGates; i++) {
if(level->rooms[room].gateinfo[i].state == STATE_CLOSED) {
- glBindTexture(GL_TEXTURE_2D, level->textures[level->rooms[room].gates[i].triangles[0].texture]);
+ glBindTexture(GL_TEXTURE_2D, level->textures[level->rooms[room].gates[i].walls[0].texture]);
glBegin(GL_TRIANGLES);
- glNormal3fv((GLfloat*)&level->rooms[room].gates[i].triangles[0].normal);
- glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].triangles[0].texcoords[0]);
- glVertex3fv((GLfloat*)&level->rooms[room].gates[i].triangles[0].vertices[0]);
- glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].triangles[0].texcoords[1]);
- glVertex3fv((GLfloat*)&level->rooms[room].gates[i].triangles[0].vertices[1]);
- glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].triangles[0].texcoords[2]);
- glVertex3fv((GLfloat*)&level->rooms[room].gates[i].triangles[0].vertices[2]);
+ glNormal3fv((GLfloat*)&level->rooms[room].gates[i].walls[0].normal);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].walls[0].texcoords[0]);
+ glVertex3fv((GLfloat*)&level->rooms[room].gates[i].walls[0].vertices[0]);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].walls[0].texcoords[1]);
+ glVertex3fv((GLfloat*)&level->rooms[room].gates[i].walls[0].vertices[1]);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].walls[0].texcoords[2]);
+ glVertex3fv((GLfloat*)&level->rooms[room].gates[i].walls[0].vertices[2]);
glEnd();
- glBindTexture(GL_TEXTURE_2D, level->textures[level->rooms[room].gates[i].triangles[0].texture]);
+ glBindTexture(GL_TEXTURE_2D, level->textures[level->rooms[room].gates[i].walls[0].texture]);
glBegin(GL_TRIANGLES);
- glNormal3fv((GLfloat*)&level->rooms[room].gates[i].triangles[1].normal);
- glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].triangles[1].texcoords[0]);
- glVertex3fv((GLfloat*)&level->rooms[room].gates[i].triangles[1].vertices[0]);
- glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].triangles[1].texcoords[1]);
- glVertex3fv((GLfloat*)&level->rooms[room].gates[i].triangles[1].vertices[1]);
- glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].triangles[1].texcoords[2]);
- glVertex3fv((GLfloat*)&level->rooms[room].gates[i].triangles[1].vertices[2]);
+ glNormal3fv((GLfloat*)&level->rooms[room].gates[i].walls[1].normal);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].walls[1].texcoords[0]);
+ glVertex3fv((GLfloat*)&level->rooms[room].gates[i].walls[1].vertices[0]);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].walls[1].texcoords[1]);
+ glVertex3fv((GLfloat*)&level->rooms[room].gates[i].walls[1].vertices[1]);
+ glTexCoord2fv((GLfloat*)&level->rooms[room].gates[i].walls[1].texcoords[2]);
+ glVertex3fv((GLfloat*)&level->rooms[room].gates[i].walls[1].vertices[2]);
glEnd();
}
else if(level->rooms[room].gateinfo[i].state == STATE_OPENING) {
- t1 = level->rooms[room].gates[i].triangles[0];
- t2 = level->rooms[room].gates[i].triangles[1];
+ t1 = level->rooms[room].gates[i].walls[0];
+ t2 = level->rooms[room].gates[i].walls[1];
t1.vertices[2] = VectorAdd(VectorMul(t1.vertices[2], level->rooms[room].gateinfo[i].timer/1000.0),
VectorMul(t1.vertices[1], 1 - (level->rooms[room].gateinfo[i].timer/1000.0)));
@@ -189,13 +189,13 @@ void DrawRoom(LEVEL *level, int room) {
r = level->rooms[room].gates[i].room;
g = level->rooms[room].gates[i].gate;
- t1 = level->rooms[room].gates[i].triangles[0];
- t2 = level->rooms[room].gates[i].triangles[1];
+ t1 = level->rooms[room].gates[i].walls[0];
+ t2 = level->rooms[room].gates[i].walls[1];
p1 = level->rooms[room].gates[i].point;
v1 = t1.normal;
- t1 = level->rooms[r].gates[g].triangles[0];
- t2 = level->rooms[r].gates[g].triangles[1];
+ t1 = level->rooms[r].gates[g].walls[0];
+ t2 = level->rooms[r].gates[g].walls[1];
p2 = level->rooms[r].gates[g].point;
v2 = VectorNeg(t1.normal);
@@ -206,8 +206,8 @@ void DrawRoom(LEVEL *level, int room) {
glPopMatrix();
}
else if(level->rooms[room].gateinfo[i].state == STATE_CLOSING) {
- t1 = level->rooms[room].gates[i].triangles[0];
- t2 = level->rooms[room].gates[i].triangles[1];
+ t1 = level->rooms[room].gates[i].walls[0];
+ t2 = level->rooms[room].gates[i].walls[1];
t1.vertices[2] = VectorAdd(VectorMul(t1.vertices[2], 1 - (level->rooms[room].gateinfo[i].timer/1000.0)),
VectorMul(t1.vertices[1], level->rooms[room].gateinfo[i].timer/1000.0));
@@ -257,13 +257,13 @@ void DrawRoom(LEVEL *level, int room) {
r = level->rooms[room].gates[i].room;
g = level->rooms[room].gates[i].gate;
- t1 = level->rooms[room].gates[i].triangles[0];
- t2 = level->rooms[room].gates[i].triangles[1];
+ t1 = level->rooms[room].gates[i].walls[0];
+ t2 = level->rooms[room].gates[i].walls[1];
p1 = level->rooms[room].gates[i].point;
v1 = t1.normal;
- t1 = level->rooms[r].gates[g].triangles[0];
- t2 = level->rooms[r].gates[g].triangles[1];
+ t1 = level->rooms[r].gates[g].walls[0];
+ t2 = level->rooms[r].gates[g].walls[1];
p2 = level->rooms[r].gates[g].point;
v2 = VectorNeg(t1.normal);
@@ -277,13 +277,13 @@ void DrawRoom(LEVEL *level, int room) {
r = level->rooms[room].gates[i].room;
g = level->rooms[room].gates[i].gate;
- t1 = level->rooms[room].gates[i].triangles[0];
- t2 = level->rooms[room].gates[i].triangles[1];
+ t1 = level->rooms[room].gates[i].walls[0];
+ t2 = level->rooms[room].gates[i].walls[1];
p1 = level->rooms[room].gates[i].point;
v1 = t1.normal;
- t1 = level->rooms[r].gates[g].triangles[0];
- t2 = level->rooms[r].gates[g].triangles[1];
+ t1 = level->rooms[r].gates[g].walls[0];
+ t2 = level->rooms[r].gates[g].walls[1];
p2 = level->rooms[r].gates[g].point;
v2 = VectorNeg(t1.normal);
@@ -301,7 +301,7 @@ void FreeLevel(LEVEL *level) {
if(level->nRooms) {
for(i = 0; i < level->nRooms; i++) {
- if(level->rooms[i].nTriangles) free(level->rooms[i].triangles);
+ if(level->rooms[i].nWalls) free(level->rooms[i].walls);
if(level->rooms[i].nObjects) free(level->rooms[i].objects);
if(level->rooms[i].nGates) free(level->rooms[i].gates);
}