[nexuiz-commits] r7396 - trunk/data/qcsrc/server
DONOTREPLY at icculus.org
DONOTREPLY at icculus.org
Sat Aug 8 16:11:33 EDT 2009
Author: div0
Date: 2009-08-08 16:11:33 -0400 (Sat, 08 Aug 2009)
New Revision: 7396
Modified:
trunk/data/qcsrc/server/g_tetris.qc
Log:
proper key repeat for tetris
Modified: trunk/data/qcsrc/server/g_tetris.qc
===================================================================
--- trunk/data/qcsrc/server/g_tetris.qc 2009-08-08 20:03:42 UTC (rev 7395)
+++ trunk/data/qcsrc/server/g_tetris.qc 2009-08-08 20:11:33 UTC (rev 7396)
@@ -10,7 +10,6 @@
.vector tet_org;
-.float tet_old_keys;
.float tetris_on, tet_gameovertime, tet_drawtime, tet_autodown;
.vector piece_pos;
.float piece_type, next_piece, tet_score, tet_lines;
@@ -800,7 +799,35 @@
return answer;
};
+.float tetkey_down, tetkey_rotright, tetkey_left, tetkey_right, tetkey_rotleft, tetkey_drop;
+float TetrisKeyRepeat(.float fld, float f)
+{
+ if(f)
+ {
+ if(self.fld == 0) // initial key press
+ {
+ self.fld = time + 0.3;
+ return 1;
+ }
+ else if(time > self.fld)
+ {
+ self.fld = time + 0.1;
+ return 1;
+ }
+ else
+ {
+ // repeating too fast
+ return 0;
+ }
+ }
+ else
+ {
+ self.fld = 0;
+ return 0;
+ }
+}
+
float TetrisPostFrame()
{
float keysa, keysb;
@@ -817,25 +844,29 @@
self.origin = self.tet_org;
- if(self.movement_x < 0)
- keysa |= TETKEY_DOWN;
- else if(self.movement_x > 0)
- keysa |= TETKEY_ROTRIGHT;
- if(self.movement_y < 0)
- keysa |= TETKEY_LEFT;
- else if(self.movement_y > 0)
- keysa |= TETKEY_RIGHT;
- if (self.BUTTON_CROUCH)
- keysa = keysa | TETKEY_ROTLEFT;
- if (self.BUTTON_JUMP)
- keysa = keysa | TETKEY_DROP;
+ if(self.tetris_on == 1)
+ {
+ if(TetrisKeyRepeat(tetkey_down, self.movement_x < 0))
+ keysa |= TETKEY_DOWN;
- keysb = keysa;
- keysa &~= self.tet_old_keys;
- self.tet_old_keys = keysb;
+ if(TetrisKeyRepeat(tetkey_rotright, self.movement_x > 0))
+ keysa |= TETKEY_ROTRIGHT;
- if(self.tetris_on == 1)
+ if(TetrisKeyRepeat(tetkey_left, self.movement_y < 0))
+ keysa |= TETKEY_LEFT;
+
+ if(TetrisKeyRepeat(tetkey_right, self.movement_y > 0))
+ keysa |= TETKEY_RIGHT;
+
+ if(TetrisKeyRepeat(tetkey_rotleft, self.BUTTON_CROUCH))
+ keysa = keysa | TETKEY_ROTLEFT;
+
+ if(TetrisKeyRepeat(tetkey_drop, self.BUTTON_JUMP))
+ keysa = keysa | TETKEY_DROP;
+
HandleGame(keysa);
+ }
+
return 1;
};
More information about the nexuiz-commits
mailing list