Added several keys to the new input system

This allows the player to use "down" keys for selecting ships in melee,
even though there is no "down" in battle.  Infrastructure for several
later enhancements is also in this patch.


git-svn-id: svn://svn.code.sf.net/p/sc2/code/trunk@1024 8092fc87-c524-0410-9efc-e669fe64eaf9
This commit is contained in:
mcmartin
2003-07-05 23:15:18 +00:00
parent f5578c4de4
commit dfe0f8a599
6 changed files with 31 additions and 7 deletions
+3 -1
View File
@@ -69,10 +69,12 @@ Lander-Right: key Keypad-6
Lander-Weapon: key RightShift
Lander-Escape: key Escape
# Player 2's flight controls.
# Player 2's flight controls. We add the key 'd' to let him
# move down in the super-melee ship selection.
Player-2-Thrust: key e
Player-2-Left: key s
Player-2-Right: key f
Player-2-Down: key d
Player-2-Weapon: key q
Player-2-Special: key a
+5 -3
View File
@@ -25,15 +25,16 @@
// This struct controls the various controls available to the player.
typedef struct _controller_input_state {
int p1_thrust, p1_left, p1_right, p1_weapon, p1_special, p1_escape;
int p2_thrust, p2_left, p2_right, p2_weapon, p2_special;
int p1_thrust, p1_left, p1_right, p1_down, p1_weapon, p1_special, p1_escape;
int p2_thrust, p2_left, p2_right, p2_down, p2_weapon, p2_special;
int lander_thrust, lander_left, lander_right, lander_weapon, lander_escape;
int pause, exit, abort;
int pause, exit, abort, debug;
} CONTROLLER_INPUT_STATE;
typedef struct _menu_input_state {
int up, down, left, right, select, cancel, special;
int page_up, page_down, zoom_in, zoom_out;
int del;
} MENU_INPUT_STATE;
typedef UBYTE BATTLE_INPUT_STATE;
@@ -43,6 +44,7 @@ typedef UBYTE BATTLE_INPUT_STATE;
#define BATTLE_WEAPON ((BATTLE_INPUT_STATE)(1 << 3))
#define BATTLE_SPECIAL ((BATTLE_INPUT_STATE)(1 << 4))
#define BATTLE_ESCAPE ((BATTLE_INPUT_STATE)(1 << 5))
#define BATTLE_DOWN ((BATTLE_INPUT_STATE)(1 << 6))
typedef BATTLE_INPUT_STATE (*battle_summary_func) (void);
extern battle_summary_func ComputerInput, HumanInput[NUM_PLAYERS];
+12 -1
View File
@@ -36,7 +36,7 @@ typedef INPUT_STATE_DESC *PINPUT_STATE_DESC;
typedef struct
{
DWORD up, down, left, right, select, cancel, special;
DWORD page_up, page_down, zoom_in, zoom_out;
DWORD page_up, page_down, zoom_in, zoom_out, del;
} MENU_ANNOTATIONS;
@@ -67,6 +67,7 @@ _clear_menu_state (void)
CurrentMenuState.page_down = 0;
CurrentMenuState.zoom_in = 0;
CurrentMenuState.zoom_out = 0;
CurrentMenuState.del = 0;
CachedMenuState.up = 0;
CachedMenuState.down = 0;
CachedMenuState.left = 0;
@@ -78,6 +79,7 @@ _clear_menu_state (void)
CachedMenuState.page_down = 0;
CachedMenuState.zoom_in = 0;
CachedMenuState.zoom_out = 0;
CachedMenuState.del = 0;
CachedGestalt = FALSE;
}
@@ -96,6 +98,7 @@ ResetKeyRepeat (void)
RepeatDelays.page_down = _max_accel;
RepeatDelays.zoom_in = _max_accel;
RepeatDelays.zoom_out = _max_accel;
RepeatDelays.del = _max_accel;
GestaltRepeatDelay = _max_accel;
Times.up = initTime;
Times.down = initTime;
@@ -108,6 +111,7 @@ ResetKeyRepeat (void)
Times.page_down = initTime;
Times.zoom_in = initTime;
Times.zoom_out = initTime;
Times.del = initTime;
GestaltTime = initTime;
}
@@ -217,6 +221,7 @@ UpdateInputState (void)
_check_for_pulse(&CurrentMenuState.page_down, &CachedMenuState.page_down, &OldMenuState.page_down, &RepeatDelays.page_down, &NewTime, &Times.page_down);
_check_for_pulse(&CurrentMenuState.zoom_in, &CachedMenuState.zoom_in, &OldMenuState.zoom_in, &RepeatDelays.zoom_in, &NewTime, &Times.zoom_in);
_check_for_pulse(&CurrentMenuState.zoom_out, &CachedMenuState.zoom_out, &OldMenuState.zoom_out, &RepeatDelays.zoom_out, &NewTime, &Times.zoom_out);
_check_for_pulse(&CurrentMenuState.del, &CachedMenuState.del, &OldMenuState.del, &RepeatDelays.del, &NewTime, &Times.del);
if (CurrentInputState.pause)
GamePaused = TRUE;
@@ -328,6 +333,8 @@ p1_combat_summary (void)
InputState |= BATTLE_SPECIAL;
if (CurrentInputState.p1_escape)
InputState |= BATTLE_ESCAPE;
if (CurrentInputState.p1_down)
InputState |= BATTLE_DOWN;
return InputState;
}
@@ -345,6 +352,8 @@ p2_combat_summary (void)
InputState |= BATTLE_WEAPON;
if (CurrentInputState.p2_special)
InputState |= BATTLE_SPECIAL;
if (CurrentInputState.p2_down)
InputState |= BATTLE_DOWN;
return InputState;
}
@@ -356,12 +365,14 @@ AnyButtonPress (BOOLEAN CheckSpecial)
return CurrentInputState.p1_thrust
||CurrentInputState.p1_left
||CurrentInputState.p1_right
||CurrentInputState.p1_down
||CurrentInputState.p1_weapon
||CurrentInputState.p1_special
||CurrentInputState.p1_escape
||CurrentInputState.p2_thrust
||CurrentInputState.p2_left
||CurrentInputState.p2_right
||CurrentInputState.p2_down
||CurrentInputState.p2_weapon
||CurrentInputState.p2_special
||CurrentInputState.lander_thrust
@@ -125,6 +125,11 @@ TFB_ProcessEvents ()
}
if (ImmediateInputState.abort)
exit (0);
if (ImmediateInputState.debug)
{
FlushInput ();
fprintf (stderr, "This would enter debug mode if we had one yet, but we don't.\n");
}
}
void
+5 -1
View File
@@ -49,15 +49,18 @@ static VControl_NameBinding control_names[] = {
{ "Menu-Page-Down", (int *)&ImmediateMenuState.page_down },
{ "Menu-Zoom-In", (int *)&ImmediateMenuState.zoom_in },
{ "Menu-Zoom-Out", (int *)&ImmediateMenuState.zoom_out },
{ "Menu-Delete", (int *)&ImmediateMenuState.del },
{ "Player-1-Thrust", (int *)&ImmediateInputState.p1_thrust },
{ "Player-1-Left", (int *)&ImmediateInputState.p1_left },
{ "Player-1-Right", (int *)&ImmediateInputState.p1_right },
{ "Player-1-Down", (int *)&ImmediateInputState.p1_down },
{ "Player-1-Weapon", (int *)&ImmediateInputState.p1_weapon },
{ "Player-1-Special", (int *)&ImmediateInputState.p1_special },
{ "Player-1-Escape", (int *)&ImmediateInputState.p1_escape },
{ "Player-2-Thrust", (int *)&ImmediateInputState.p2_thrust },
{ "Player-2-Left", (int *)&ImmediateInputState.p2_left },
{ "Player-2-Right", (int *)&ImmediateInputState.p2_right },
{ "Player-2-Down", (int *)&ImmediateInputState.p2_down },
{ "Player-2-Weapon", (int *)&ImmediateInputState.p2_weapon },
{ "Player-2-Special", (int *)&ImmediateInputState.p2_special },
{ "Lander-Thrust", (int *)&ImmediateInputState.lander_thrust },
@@ -67,7 +70,8 @@ static VControl_NameBinding control_names[] = {
{ "Lander-Escape", (int *)&ImmediateInputState.lander_escape },
{ "Pause", (int *)&ImmediateInputState.pause },
{ "Exit", (int *)&ImmediateInputState.exit },
{ "Abort", (int *)&ImmediateInputState.abort }};
{ "Abort", (int *)&ImmediateInputState.abort },
{ "Debug", (int *)&ImmediateInputState.debug }};
static void
+1 -1
View File
@@ -230,7 +230,7 @@ GetMeleeStarShip (STARSHIPPTR LastStarShipPtr, COUNT which_player)
if (new_row-- == 0)
new_row = NUM_MELEE_ROWS - 1;
}
else if (CurrentMenuState.down)
else if ((InputState & BATTLE_DOWN) || CurrentMenuState.down)
{
if (++new_row == NUM_MELEE_ROWS)
new_row = 0;