ref: 16447cf340d51ef54d6780a28ebe6192cf2d1537
parent: 2f38d73f55a8927ceca131e74874d1d544d11fac
author: Simon Howard <[email protected]>
date: Wed Feb 7 07:58:53 EST 2007
Don't throw away keypress state when passing between levels - allows shift to be held down for run when moving between levels. Thanks to Zack Friedrich <[email protected]> for pointing this out. Subversion-branch: /trunk/chocolate-doom Subversion-revision: 831
--- a/NEWS
+++ b/NEWS
@@ -107,6 +107,9 @@
is possible to disable sound, as with Vanilla.
* Repeat key presses when the key is held down (this is the Vanilla
behavior) - thanks to Mad_Mac for pointing this out.
+ * Don't throw away key press state when starting a new level - allows
+ shift to be held down for run when moving between levels (thanks
+ to Zack Friedrich <[email protected]>.
* Don't print a list of all arguments read from response files - Vanilla
doesn't do this.
* Autorun only when joyb_speed >= 10, not >= 4. Thanks to Janizdreg
--- a/src/g_game.c
+++ b/src/g_game.c
@@ -195,41 +195,42 @@
#define TURBOTHRESHOLD 0x32
-fixed_t forwardmove[2] = {0x19, 0x32};
-fixed_t sidemove[2] = {0x18, 0x28};
-fixed_t angleturn[3] = {640, 1280, 320}; // + slow turn
+fixed_t forwardmove[2] = {0x19, 0x32};
+fixed_t sidemove[2] = {0x18, 0x28};
+fixed_t angleturn[3] = {640, 1280, 320}; // + slow turn
#define SLOWTURNTICS 6
#define NUMKEYS 256
-boolean gamekeydown[NUMKEYS];
-int turnheld; // for accelerative turning
+static boolean gamekeydown_initialised = false;
+static boolean gamekeydown[NUMKEYS];
+static int turnheld; // for accelerative turning
-boolean mousearray[4];
-boolean* mousebuttons = &mousearray[1]; // allow [-1]
+static boolean mousearray[4];
+static boolean *mousebuttons = &mousearray[1]; // allow [-1]
// mouse values are used once
int mousex;
-int mousey;
+int mousey;
-int dclicktime;
-boolean dclickstate;
-int dclicks;
-int dclicktime2;
-boolean dclickstate2;
-int dclicks2;
+static int dclicktime;
+static boolean dclickstate;
+static int dclicks;
+static int dclicktime2;
+static boolean dclickstate2;
+static int dclicks2;
// joystick values are repeated
-int joyxmove;
-int joyymove;
-boolean joyarray[5];
-boolean* joybuttons = &joyarray[1]; // allow [-1]
+static int joyxmove;
+static int joyymove;
+static boolean joyarray[5];
+static boolean *joybuttons = &joyarray[1]; // allow [-1]
-int savegameslot;
-char savedescription[32];
+static int savegameslot;
+static char savedescription[32];
-int testcontrols_mousespeed;
+static int testcontrols_mousespeed;
#define BODYQUESIZE 32
@@ -643,7 +644,15 @@
Z_CheckHeap ();
// clear cmd building stuff
- memset (gamekeydown, 0, sizeof(gamekeydown));
+
+ // Initialise gamekeydown when the first level is loaded
+
+ if (!gamekeydown_initialised)
+ {
+ memset (gamekeydown, 0, sizeof(gamekeydown));
+ gamekeydown_initialised = true;
+ }
+
joyxmove = joyymove = 0;
mousex = mousey = 0;
sendpause = sendsave = paused = false;