From a5aa4b54e23d0793793384a6794cc543ea48ad34 Mon Sep 17 00:00:00 2001 From: neoraider Date: Mon, 14 May 2007 17:38:01 +0000 Subject: libzoom: XML level loader implemented. zoom: Converted old test level to XML. --- player.c | 98 ++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 49 insertions(+), 49 deletions(-) (limited to 'player.c') diff --git a/player.c b/player.c index 2715d92..77c0704 100644 --- a/player.c +++ b/player.c @@ -20,7 +20,7 @@ float rotxspeed = 0, rotyspeed = 0; float objrot = 0; -extern LEVEL level; +extern LEVEL *level; extern int nLights; extern LIGHT *lights; @@ -77,7 +77,7 @@ void DoInput(int delta) { s = player.rotysin; c = player.rotycos; - if(!falling) { + if(!falling) { if((input & INPUT_UP) && !(input & INPUT_DOWN)) { if((input & INPUT_RIGHT) && !(input & INPUT_LEFT)) { move.x = (s+c)*M_SQRT1_2; @@ -115,12 +115,12 @@ void DoInput(int delta) { move.z = -s; } if(input & INPUT_OPEN) { - for(i = 0; i < level.rooms[room].nGates; i++) { - if(level.rooms[room].gateinfo[i].state != STATE_CLOSED) continue; - if(CollisionSphereTriangle(player.pos, 1.0, level.rooms[room].gates[i].walls[0].triangle) || - CollisionSphereTriangle(player.pos, 1.0, level.rooms[room].gates[i].walls[1].triangle)) { - level.rooms[room].gateinfo[i].state = STATE_OPENING; - level.rooms[room].gateinfo[i].timer = 1000; + for(i = 0; i < level->rooms[room].nGates; i++) { + if(level->rooms[room].gateinfo[i].state != STATE_CLOSED) continue; + if(CollisionSphereTriangle(player.pos, 1.0, level->rooms[room].gates[i].walls[0].triangle) || + CollisionSphereTriangle(player.pos, 1.0, level->rooms[room].gates[i].walls[1].triangle)) { + level->rooms[room].gateinfo[i].state = STATE_OPENING; + level->rooms[room].gateinfo[i].timer = 1000; } } } @@ -130,21 +130,21 @@ void DoInput(int delta) { if(falling) pos.y -= delta/100.0; - for(i = 0; i < level.rooms[room].nGates; i++) { - if(CollisionSphereTriangle(pos, 0.3, level.rooms[room].gates[i].walls[0].triangle) || - CollisionSphereTriangle(pos, 0.3, level.rooms[room].gates[i].walls[1].triangle)) { - if(level.rooms[room].gateinfo[i].state == STATE_OPENED) { - if(CollisionPointTriangle(pos, level.rooms[room].gates[i].walls[0].triangle) || - CollisionPointTriangle(pos, level.rooms[room].gates[i].walls[1].triangle)) { - p1 = level.rooms[room].gates[i].point; - v1 = level.rooms[room].gates[i].walls[0].normal; - level.rooms[room].gateinfo[i].state = STATE_CLOSED; - g = level.rooms[room].gates[i].gate; - room = level.rooms[room].gates[i].room; - p2 = level.rooms[room].gates[g].point; - v2 = VectorNeg(level.rooms[room].gates[g].walls[0].normal); - level.rooms[room].gateinfo[g].state = STATE_OPENED; - level.rooms[room].gateinfo[g].timer = 5000; + /*for(i = 0; i < level->rooms[room].nGates; i++) { + if(CollisionSphereTriangle(pos, 0.3, level->rooms[room].gates[i].walls[0].triangle) || + CollisionSphereTriangle(pos, 0.3, level->rooms[room].gates[i].walls[1].triangle)) { + if(level->rooms[room].gateinfo[i].state == STATE_OPENED) { + if(CollisionPointTriangle(pos, level->rooms[room].gates[i].walls[0].triangle) || + CollisionPointTriangle(pos, level->rooms[room].gates[i].walls[1].triangle)) { + p1 = level->rooms[room].gates[i].point; + v1 = level->rooms[room].gates[i].walls[0].normal; + level->rooms[room].gateinfo[i].state = STATE_CLOSED; + g = level->rooms[room].gates[i].gate; + room = level->rooms[room].gates[i].room; + p2 = level->rooms[room].gates[g].point; + v2 = VectorNeg(level->rooms[room].gates[g].walls[0].normal); + level->rooms[room].gateinfo[g].state = STATE_OPENED; + level->rooms[room].gateinfo[g].timer = 5000; transform = VectorMatrix(p2, v2, p1, v1); pos = VectorMatrixMul(pos, transform); v1.x = p1.x + c; @@ -155,33 +155,33 @@ void DoInput(int delta) { move = VectorSub(VectorMatrixMul(VectorAdd(move, p1), transform), p2); break; } - level.rooms[room].gateinfo[i].timer = 5000; + level->rooms[room].gateinfo[i].timer = 5000; } else pos = player.pos; } - } + }*/ falling = 1; - for(i = 0; i < level.rooms[room].nWalls; i++) { - if(level.rooms[room].walls[i].type == TRIANGLE_WALL && - CollisionMovingSphereTriangle(VectorSub(pos, VectorMul(move, delta/150.0)), 0.3, move, delta/150.0, level.rooms[room].walls[i].triangle)) { + for(i = 0; i < level->rooms[room].nWalls; i++) { + if(level->rooms[room].walls[i].type == TRIANGLE_WALL && + CollisionMovingSphereTriangle(VectorSub(pos, VectorMul(move, delta/150.0)), 0.3, move, delta/150.0, level->rooms[room].walls[i].triangle)) { pos = player.pos; if(player.room != room) { - level.rooms[room].gateinfo[g].state = STATE_CLOSED; - g = level.rooms[room].gates[g].gate; + level->rooms[room].gateinfo[g].state = STATE_CLOSED; + g = level->rooms[room].gates[g].gate; room = player.room; - level.rooms[room].gateinfo[g].state = STATE_OPENED; + level->rooms[room].gateinfo[g].state = STATE_OPENED; } s = player.rotysin; c = player.rotycos; falling = 0; break; } - else if(level.rooms[room].walls[i].type == TRIANGLE_FLOOR) { + else if(level->rooms[room].walls[i].type == TRIANGLE_FLOOR) { pos.y -= 1.81; - if(CollisionPointTriangle(pos, level.rooms[room].walls[i].triangle)) { + if(CollisionPointTriangle(pos, level->rooms[room].walls[i].triangle)) { falling = 0; pos.y += 1.81; - if(wasfalling && CollisionRayTriangle(pos, v, level.rooms[room].walls[i].triangle, &f)) pos.y -= f - 1.8; + if(wasfalling && CollisionRayTriangle(pos, v, level->rooms[room].walls[i].triangle, &f)) pos.y -= f - 1.8; } else pos.y += 1.81; } @@ -191,29 +191,29 @@ void DoInput(int delta) { player.rotysin = s; player.rotycos = c; - for(i = 0; i < level.rooms[player.room].nThings; i++) { - pos = VectorSub(level.rooms[player.room].things[i].pos, player.pos); + for(i = 0; i < level->rooms[player.room].nThings; i++) { + pos = VectorSub(level->rooms[player.room].things[i].pos, player.pos); pos.y += 0.9; - switch(level.rooms[player.room].things[i].type) { + switch(level->rooms[player.room].things[i].type) { case THING_MEDIPAK100: - if((pos.x*pos.x + (pos.y*pos.y)/3 + pos.z*pos.z) < 0.36) level.rooms[player.room].things[i].visible = 0; + if((pos.x*pos.x + (pos.y*pos.y)/3 + pos.z*pos.z) < 0.36) level->rooms[player.room].things[i].visible = 0; } } - for(i = 0; i < level.rooms[player.room].nGates; i++) { - if(level.rooms[player.room].gateinfo[i].state == STATE_CLOSED) continue; - if((level.rooms[player.room].gateinfo[i].timer - delta) < 0) { - if(level.rooms[player.room].gateinfo[i].state == STATE_OPENING) { - level.rooms[player.room].gateinfo[i].state = STATE_OPENED; - level.rooms[player.room].gateinfo[i].timer = 5000; + for(i = 0; i < level->rooms[player.room].nGates; i++) { + if(level->rooms[player.room].gateinfo[i].state == STATE_CLOSED) continue; + if((level->rooms[player.room].gateinfo[i].timer - delta) < 0) { + if(level->rooms[player.room].gateinfo[i].state == STATE_OPENING) { + level->rooms[player.room].gateinfo[i].state = STATE_OPENED; + level->rooms[player.room].gateinfo[i].timer = 5000; } - else if(level.rooms[player.room].gateinfo[i].state == STATE_OPENED) { - level.rooms[player.room].gateinfo[i].state = STATE_CLOSING; - level.rooms[player.room].gateinfo[i].timer = 1000; + else if(level->rooms[player.room].gateinfo[i].state == STATE_OPENED) { + level->rooms[player.room].gateinfo[i].state = STATE_CLOSING; + level->rooms[player.room].gateinfo[i].timer = 1000; } - else level.rooms[player.room].gateinfo[i].state = STATE_CLOSED; + else level->rooms[player.room].gateinfo[i].state = STATE_CLOSED; } - else level.rooms[player.room].gateinfo[i].timer -= delta; + else level->rooms[player.room].gateinfo[i].timer -= delta; } static int lightpos = 0; -- cgit v1.2.3