summaryrefslogtreecommitdiffstats
path: root/player.c
diff options
context:
space:
mode:
Diffstat (limited to 'player.c')
-rw-r--r--player.c98
1 files changed, 49 insertions, 49 deletions
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;