aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/Game.h8
-rw-r--r--src/GameLoop.cpp139
-rw-r--r--src/GameTick.cpp102
3 files changed, 106 insertions, 143 deletions
diff --git a/src/Game.h b/src/Game.h
index 1f92ba7..aafc199 100644
--- a/src/Game.h
+++ b/src/Game.h
@@ -81,9 +81,6 @@ public:
float mousesensitivity;
float usermousesensitivity;
- // Keyboard
- bool tabkeydown;
-
// Project specific
int cityrotation[num_blocks][num_blocks];
int citytype[num_blocks][num_blocks];
@@ -135,9 +132,6 @@ public:
bool paused;
int mainmenu;
- bool reloadtoggle;
- bool aimtoggle;
-
Point olddrawmouse;
XYZ vipgoal;
XYZ aimer[2];
@@ -156,7 +150,6 @@ public:
bool musictoggle;
float psychicpower;
int type;
- bool slomokeydown;
int mouseoverbutton;
int oldmouseoverbutton;
@@ -184,7 +177,6 @@ public:
int evilprobability;
float difficulty;
bool azertykeyboard;
- bool oldvisionkey;
// GL functions
GLvoid ReSizeGLScene(float fov, float near);
diff --git a/src/GameLoop.cpp b/src/GameLoop.cpp
index 9e42b88..1ef1c9f 100644
--- a/src/GameLoop.cpp
+++ b/src/GameLoop.cpp
@@ -22,6 +22,7 @@
#include "Game.h"
extern float multiplier;
+extern int thirdperson;
extern int visions;
extern unsigned int gSourceID[100];
extern unsigned int gSampleSet[100];
@@ -30,27 +31,120 @@ extern float rad2deg;
extern Fog fog;
extern int environment;
extern int slomo;
+extern int aimkey;
+extern int psychicaimkey;
+extern int psychickey;
void keyCallback(Game* game, int key, int action, int mods)
{
- if (game->mainmenu || action != GLFW_PRESS)
+ if (action != GLFW_PRESS)
return;
+ if (game->mainmenu) {
+ if (key == GLFW_KEY_SPACE)
+ game->mainmenu = 0;
+ return;
+ }
+
+ auto& player = game->person[0];
+ if (key == GLFW_KEY_ESCAPE) {
+ alSourcePause(gSourceID[rainsound]);
+ game->mainmenu = 1;
+ alSourcePlay(gSourceID[souloutsound]);
+ game->flashamount = 1.0f;
+ game->flashr = game->flashg = game->flashb = 1.0f;
+ alSourceStop(gSourceID[visionsound]);
+ game->whichsong = mainmenusong;
+ alSourceStop(gSourceID[knifesong]);
+ alSourceStop(gSourceID[shootsong]);
+ alSourceStop(gSourceID[zombiesong]);
+ alSourceStop(gSourceID[mainmenusong]);
+ alSourcef(gSourceID[knifesong], AL_MIN_GAIN, 0);
+ alSourcef(gSourceID[shootsong], AL_MIN_GAIN, 0);
+ alSourcef(gSourceID[zombiesong], AL_MIN_GAIN, 0);
+ alSourcef(gSourceID[mainmenusong], AL_MIN_GAIN, 0);
+ alSourcePlay(gSourceID[game->whichsong]);
+ alSourcef(gSourceID[game->whichsong], AL_MIN_GAIN, 1);
+ } else if (key == GLFW_KEY_L) {
+ game->lasersight ^= 1;
+ } else if (key == GLFW_KEY_SPACE) {
+ if (player.playerrotation == player.playerlowrotation
+ && player.targetanimation == joganim
+ && player.currentanimation == joganim
+ && !player.backwardsanim && !visions) {
+ player.targetanimation = diveanim;
+ player.targetframe = player.target = 0;
+ player.aimamount = 0;
+ }
+ } else if (key == GLFW_KEY_R) {
+ if (player.reloads[player.whichgun] > 0
+ && player.reloading <= 0)
+ player.ammo = -1;
+ } else if (key == aimkey) {
+ player.aiming ^= 1;
+ } else if (key == psychicaimkey) {
+ game->flashamount = 0.5;
+ game->flashr = 1;
+ game->flashg = game->flashb = 0;
+ alSourcePlay(gSourceID[souloutsound]);
+
+ slomo = 2;
+ game->score -= 20;
+
+ alSourcef(gSourceID[knifesong], AL_PITCH, 0.5f);
+ alSourcef(gSourceID[shootsong], AL_PITCH, 0.5f);
+ alSourcef(gSourceID[zombiesong], AL_PITCH, 0.5f);
+ } else if (key == psychickey) {
+ if (visions ^= 1) {
+ game->flashamount = game->flashr = 1;
+ game->flashg = game->flashb = 0;
+ alSourceStop(gSourceID[visionsound]);
+ alSourcePlay(gSourceID[souloutsound]);
+
+ alSourcef(gSourceID[knifesong], AL_PITCH, 0.5f);
+ alSourcef(gSourceID[shootsong], AL_PITCH, 0.5f);
+ alSourcef(gSourceID[zombiesong], AL_PITCH, 0.5f);
+ alSourcePlay(gSourceID[visionsound]);
+ game->bodycoords = player.oldplayercoords;
+ } else {
+ game->flashamount = 1;
+ game->flashr = game->flashg = game->flashb = 1;
+ alSourceStop(gSourceID[visionsound]);
+ alSourcePlay(gSourceID[soulinsound]);
+
+ alSourcef(gSourceID[knifesong], AL_PITCH, 1.0f);
+ alSourcef(gSourceID[shootsong], AL_PITCH, 1.0f);
+ alSourcef(gSourceID[zombiesong], AL_PITCH, 1.0f);
+
+ XYZ towards = player.playercoords - game->bodycoords;
+ if (towards.x || towards.z) {
+ Normalise(&towards);
+ camera.rotation = RadiansToDegrees(asin(towards.x));
+ if (towards.z > 0)
+ camera.rotation = 180 - camera.rotation;
+
+ camera.visrotation = camera.rotation;
+ camera.oldrotation = camera.rotation;
+ }
+
+ player.playercoords = game->bodycoords;
+ player.oldplayercoords = game->bodycoords;
+ player.velocity = 0;
+ }
+ }
- auto shift = mods & GLFW_MOD_SHIFT;
- auto player = game->person[0];
+ if (!game->debug)
+ return;
+ const auto shift = mods & GLFW_MOD_SHIFT;
XYZ facing;
switch(key) {
- case GLFW_KEY_L:
- game->lasersight ^= 1;
+ case GLFW_KEY_TAB:
+ thirdperson = (thirdperson == 2) ? 0 : (thirdperson + 1);
break;
case GLFW_KEY_K:
- if (game->debug)
- game->timeremaining = 0;
+ game->timeremaining = 0;
break;
case GLFW_KEY_B:
- if (!game->debug)
- break;
alSourcePlay(gSourceID[soulinsound]);
if (shift) {
game->paused = 1 - game->paused;
@@ -62,13 +156,10 @@ void keyCallback(Game* game, int key, int action, int mods)
}
break;
case GLFW_KEY_F:
- if (!game->debug)
- break;
- alSourcePlay(gSourceID[souloutsound]);
-
facing = {0, 0, -1};
facing = DoRotation(facing, -camera.rotation2, 0, 0);
facing = DoRotation(facing, 0, 0 - camera.rotation, 0);
+ alSourcePlay(gSourceID[souloutsound]);
for (int i = 1; i < game->numpeople; i++) {
auto& person = game->person[i];
@@ -95,7 +186,7 @@ void keyCallback(Game* game, int key, int action, int mods)
}
break;
case GLFW_KEY_X:
- if (!game->debug || !shift || player.grenphase)
+ if (!shift || player.grenphase)
break;
player.ammo = -1;
player.whichgun++;
@@ -139,24 +230,4 @@ void eventLoop(Game* game)
multiplier /= 5;
if (game->paused)
multiplier = 0;
-
- if (IsKeyDown(GLFW_KEY_ESCAPE)) {
- alSourcePause(gSourceID[rainsound]);
- game->mainmenu = 1;
- alSourcePlay(gSourceID[souloutsound]);
- game->flashamount = 1.0f;
- game->flashr = game->flashg = game->flashb = 1.0f;
- alSourceStop(gSourceID[visionsound]);
- game->whichsong = mainmenusong;
- alSourceStop(gSourceID[knifesong]);
- alSourceStop(gSourceID[shootsong]);
- alSourceStop(gSourceID[zombiesong]);
- alSourceStop(gSourceID[mainmenusong]);
- alSourcef(gSourceID[knifesong], AL_MIN_GAIN, 0);
- alSourcef(gSourceID[shootsong], AL_MIN_GAIN, 0);
- alSourcef(gSourceID[zombiesong], AL_MIN_GAIN, 0);
- alSourcef(gSourceID[mainmenusong], AL_MIN_GAIN, 0);
- alSourcePlay(gSourceID[game->whichsong]);
- alSourcef(gSourceID[game->whichsong], AL_MIN_GAIN, 1);
- }
}
diff --git a/src/GameTick.cpp b/src/GameTick.cpp
index 708508e..2e9c71a 100644
--- a/src/GameTick.cpp
+++ b/src/GameTick.cpp
@@ -124,9 +124,6 @@ void Game::updateSong()
void Game::handleMenu()
{
- if (IsKeyDown(GLFW_KEY_SPACE))
- mainmenu = 0;
-
GetMouse(&mouseloc);
float mousex = (float) mouseloc.h * 640 / screenwidth;
float mousey = 480 - (float) mouseloc.v * 480 / screenheight;
@@ -178,91 +175,6 @@ void Game::handleMenu()
}
}
-void Game::handleToggles()
-{
- if (!IsKeyDown(psychickey)) {
- oldvisionkey = 0;
- } else if (!oldvisionkey) {
- oldvisionkey = 1;
- if (visions ^= 1) {
- flashamount = flashr = 1;
- flashg = flashb = 0;
- alSourceStop(gSourceID[visionsound]);
- alSourcePlay(gSourceID[souloutsound]);
-
- alSourcef(gSourceID[knifesong], AL_PITCH, 0.5f);
- alSourcef(gSourceID[shootsong], AL_PITCH, 0.5f);
- alSourcef(gSourceID[zombiesong], AL_PITCH, 0.5f);
- alSourcePlay(gSourceID[visionsound]);
- bodycoords = person[0].oldplayercoords;
- } else {
- flashamount = flashr = flashg = flashb = 1;
- alSourceStop(gSourceID[visionsound]);
- alSourcePlay(gSourceID[soulinsound]);
-
- alSourcef(gSourceID[knifesong], AL_PITCH, 1.0f);
- alSourcef(gSourceID[shootsong], AL_PITCH, 1.0f);
- alSourcef(gSourceID[zombiesong], AL_PITCH, 1.0f);
-
- XYZ towards = person[0].playercoords - bodycoords;
- if (towards.x || towards.z) {
- Normalise(&towards);
- camera.rotation = RadiansToDegrees(asin(towards.x));
- if (towards.z > 0)
- camera.rotation = 180 - camera.rotation;
-
- camera.visrotation = camera.rotation;
- camera.oldrotation = camera.rotation;
- }
-
- person[0].playercoords = bodycoords;
- person[0].oldplayercoords = bodycoords;
- person[0].velocity = 0;
- }
- }
-
- if (!IsKeyDown(GLFW_KEY_TAB)) {
- tabkeydown = 0;
- } else if (!tabkeydown && debug) {
- thirdperson++;
- if (thirdperson > 2)
- thirdperson = 0;
- tabkeydown = 1;
- }
-
- if (!IsKeyDown(aimkey)) {
- aimtoggle = 0;
- } else if (!aimtoggle) {
- person[0].aiming ^= aimtoggle = 1;
- }
-
- if (!IsKeyDown(GLFW_KEY_R)) {
- reloadtoggle = 0;
- } else if (!reloadtoggle) {
- if (person[0].reloads[person[0].whichgun] > 0
- && person[0].reloading <= 0)
- person[0].ammo=-1;
- reloadtoggle = 1;
- }
-
- if (!IsKeyDown(psychicaimkey)) {
- slomokeydown = 0;
- } else if (!slomokeydown && !slomo) {
- flashamount = 0.5;
- flashr = 1;
- flashg = flashb = 0;
- alSourcePlay(gSourceID[souloutsound]);
-
- slomokeydown = 1;
- slomo = 2;
- score -= 20;
-
- alSourcef(gSourceID[knifesong], AL_PITCH, 0.5f);
- alSourcef(gSourceID[shootsong], AL_PITCH, 0.5f);
- alSourcef(gSourceID[zombiesong], AL_PITCH, 0.5f);
- }
-}
-
void Game::mouseLook()
{
if ((person[0].aimamount <= 0
@@ -470,7 +382,6 @@ void Game::Tick()
flatfacing.y = 0;
Normalise(&flatfacing);
- handleToggles();
mouseLook();
//Check collision with buildings
@@ -689,16 +600,6 @@ void Game::Tick()
}
- if (IsKeyDown(GLFW_KEY_SPACE)
- && person[0].playerrotation == person[0].playerlowrotation
- && person[0].targetanimation == joganim
- && person[0].currentanimation == joganim
- && !person[0].backwardsanim && !visions) {
- person[0].targetanimation = diveanim;
- person[0].targetframe = person[0].target = 0;
- person[0].aimamount = 0;
- }
-
//Camera
camera.oldposition=camera.position;
camera.targetoffset=0;
@@ -2136,8 +2037,7 @@ void Game::Tick()
}
XYZ end {start + aim * 1000};
- if (debug && j == 0
- && IsKeyDown(GLFW_KEY_G)) {
+ if (debug && j == 0 && IsKeyDown(GLFW_KEY_G)) {
sprites.MakeSprite(grenadesprite, 1, 1, 1, 1,
start, aim * 200, 1.01);
continue;