mirror of
https://github.com/LostArtefacts/TRX.git
synced 2025-04-28 12:47:58 +03:00
input: changed target change from look to a new keybind (#1519)
Resolves #1503.
This commit is contained in:
parent
30c2bc2b89
commit
e5d7036b52
10 changed files with 22 additions and 28 deletions
|
@ -1,6 +1,7 @@
|
|||
## [Unreleased](https://github.com/LostArtefacts/TR1X/compare/stable...develop) - ××××-××-××
|
||||
- added `/exit` command (#1462)
|
||||
- added reflections to Midas Hand death animation and savegame crystals (#154)
|
||||
- changed the target change functionality from the look key to a new, standalone key (default `z` on keyboard, `left analog click` on controller) (#1503)
|
||||
- fixed `/play`, `/load`, `/demo` and similar commands not working in stats, credits, cinematics and fmvs (#1477)
|
||||
- fixed console commands being able to interfere with demos, cutscenes and the title screen (#1489, regression from 3.0)
|
||||
- fixed reopening the compass not resetting its needle (#1472, regression from 4.0)
|
||||
|
|
|
@ -541,7 +541,7 @@ Not all options are turned on by default. Refer to `TR1X_ConfigTool.exe` for det
|
|||
- fixed not being able to close level stats with Escape
|
||||
- fixed Lara jumping forever when alt+tabbing out of the game
|
||||
- stopped the default controls from functioning when the user unbound them
|
||||
- added the option to change weapon targets by tapping the look key like in TR4+
|
||||
- added the option to change weapon targets by tapping the new target change key
|
||||
- added three targeting lock options:
|
||||
- full lock: always keep target lock even if the enemy moves out of sight or dies (OG TR1)
|
||||
- semi lock: keep target lock if the enemy moves out of sight but lose target lock if the enemy dies
|
||||
|
|
|
@ -658,6 +658,7 @@
|
|||
"KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip",
|
||||
"KEYMAP_TURBO_CHEAT": "Turbo Speed",
|
||||
"KEYMAP_ENTER_CONSOLE": "Enter Console",
|
||||
"KEYMAP_CHANGE_TARGET": "Change Target",
|
||||
"KEYMAP_CAMERA_UP": "Camera Up",
|
||||
"KEYMAP_CAMERA_DOWN": "Camera Down",
|
||||
"KEYMAP_CAMERA_LEFT": "Camera Left",
|
||||
|
|
|
@ -154,6 +154,7 @@
|
|||
"KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip",
|
||||
"KEYMAP_TURBO_CHEAT": "Turbo Speed",
|
||||
"KEYMAP_ENTER_CONSOLE": "Enter Console",
|
||||
"KEYMAP_CHANGE_TARGET": "Change Target",
|
||||
"KEYMAP_CAMERA_UP": "Camera Up",
|
||||
"KEYMAP_CAMERA_DOWN": "Camera Down",
|
||||
"KEYMAP_CAMERA_LEFT": "Camera Left",
|
||||
|
|
|
@ -226,6 +226,7 @@
|
|||
"KEYMAP_LEVEL_SKIP_CHEAT": "Level Skip",
|
||||
"KEYMAP_TURBO_CHEAT": "Turbo Speed",
|
||||
"KEYMAP_ENTER_CONSOLE": "Enter Console",
|
||||
"KEYMAP_CHANGE_TARGET": "Change Target",
|
||||
"KEYMAP_CAMERA_UP": "Camera Up",
|
||||
"KEYMAP_CAMERA_DOWN": "Camera Down",
|
||||
"KEYMAP_CAMERA_LEFT": "Camera Left",
|
||||
|
|
|
@ -71,6 +71,7 @@ GS_DEFINE(KEYMAP_ITEM_CHEAT, "Item Cheat")
|
|||
GS_DEFINE(KEYMAP_LEVEL_SKIP_CHEAT, "Level Skip")
|
||||
GS_DEFINE(KEYMAP_TURBO_CHEAT, "Turbo Speed")
|
||||
GS_DEFINE(KEYMAP_ENTER_CONSOLE, "Enter Console")
|
||||
GS_DEFINE(KEYMAP_CHANGE_TARGET, "Change Target")
|
||||
GS_DEFINE(KEYMAP_CAMERA_UP, "Camera Up")
|
||||
GS_DEFINE(KEYMAP_CAMERA_DOWN, "Camera Down")
|
||||
GS_DEFINE(KEYMAP_CAMERA_LEFT, "Camera Left")
|
||||
|
|
|
@ -19,33 +19,9 @@ static bool m_KeyConflict[INPUT_ROLE_NUMBER_OF] = { false };
|
|||
static bool m_BtnConflict[INPUT_ROLE_NUMBER_OF] = { false };
|
||||
static int32_t m_HoldBack = 0;
|
||||
static int32_t m_HoldForward = 0;
|
||||
static int32_t m_HoldLook = 0;
|
||||
|
||||
static void Input_CheckChangeTarget(INPUT_STATE *input);
|
||||
static INPUT_STATE Input_GetDebounced(INPUT_STATE input);
|
||||
|
||||
static void Input_CheckChangeTarget(INPUT_STATE *input)
|
||||
{
|
||||
if (g_Lara.gun_status != LGS_READY) {
|
||||
return;
|
||||
}
|
||||
|
||||
const int32_t frame = Clock_GetLogicalFrame();
|
||||
if (input->look) {
|
||||
if (m_HoldLook == 0 || frame - m_HoldLook < LOOK_HOLD_TIME) {
|
||||
input->look = 0;
|
||||
if (m_HoldLook == 0) {
|
||||
m_HoldLook = frame;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if (m_HoldLook > 0 && frame - m_HoldLook < LOOK_HOLD_TIME) {
|
||||
input->change_target = 1;
|
||||
}
|
||||
m_HoldLook = 0;
|
||||
}
|
||||
}
|
||||
|
||||
static INPUT_STATE Input_GetDebounced(INPUT_STATE input)
|
||||
{
|
||||
INPUT_STATE result;
|
||||
|
@ -173,8 +149,8 @@ void Input_Update(void)
|
|||
}
|
||||
}
|
||||
|
||||
if (g_Config.enable_target_change) {
|
||||
Input_CheckChangeTarget(&g_Input);
|
||||
if (!g_Config.enable_target_change || g_Lara.gun_status != LGS_READY) {
|
||||
g_Input.change_target = 0;
|
||||
}
|
||||
|
||||
g_InputDB = Input_GetDebounced(g_Input);
|
||||
|
|
|
@ -127,6 +127,7 @@ static const TEXT_COLUMN_PLACEMENT CtrlTextPlacementNormal[] = {
|
|||
{ INPUT_ROLE_STEP_R, GS_KEYMAP_STEP_RIGHT, true },
|
||||
{ INPUT_ROLE_OPTION, GS_KEYMAP_INVENTORY, false },
|
||||
{ INPUT_ROLE_PAUSE, GS_KEYMAP_PAUSE, true },
|
||||
{ INPUT_ROLE_CHANGE_TARGET, GS_KEYMAP_CHANGE_TARGET, true },
|
||||
{ INPUT_ROLE_CAMERA_UP, GS_KEYMAP_CAMERA_UP, true },
|
||||
{ INPUT_ROLE_CAMERA_DOWN, GS_KEYMAP_CAMERA_DOWN, true },
|
||||
{ INPUT_ROLE_CAMERA_LEFT, GS_KEYMAP_CAMERA_LEFT, true },
|
||||
|
@ -162,6 +163,7 @@ static const TEXT_COLUMN_PLACEMENT CtrlTextPlacementCheats[] = {
|
|||
{ INPUT_ROLE_STEP_R, GS_KEYMAP_STEP_RIGHT, true },
|
||||
{ INPUT_ROLE_OPTION, GS_KEYMAP_INVENTORY, false },
|
||||
{ INPUT_ROLE_PAUSE, GS_KEYMAP_PAUSE, true },
|
||||
{ INPUT_ROLE_CHANGE_TARGET, GS_KEYMAP_CHANGE_TARGET, true },
|
||||
{ INPUT_ROLE_CAMERA_UP, GS_KEYMAP_CAMERA_UP, true },
|
||||
{ INPUT_ROLE_CAMERA_DOWN, GS_KEYMAP_CAMERA_DOWN, true },
|
||||
{ INPUT_ROLE_CAMERA_LEFT, GS_KEYMAP_CAMERA_LEFT, true },
|
||||
|
|
|
@ -1803,7 +1803,8 @@ typedef enum INPUT_ROLE {
|
|||
INPUT_ROLE_FPS = 31,
|
||||
INPUT_ROLE_BILINEAR = 32,
|
||||
INPUT_ROLE_ENTER_CONSOLE = 33,
|
||||
INPUT_ROLE_NUMBER_OF = 34,
|
||||
INPUT_ROLE_CHANGE_TARGET = 34,
|
||||
INPUT_ROLE_NUMBER_OF = 35,
|
||||
} INPUT_ROLE;
|
||||
|
||||
typedef enum INPUT_LAYOUT {
|
||||
|
|
|
@ -63,6 +63,7 @@ static INPUT_SCANCODE m_Layout[INPUT_LAYOUT_NUMBER_OF][INPUT_ROLE_NUMBER_OF] = {
|
|||
SDL_SCANCODE_F2, // INPUT_ROLE_FPS
|
||||
SDL_SCANCODE_F3, // INPUT_ROLE_BILINEAR
|
||||
SDL_SCANCODE_SLASH, // INPUT_ROLE_ENTER_CONSOLE
|
||||
SDL_SCANCODE_Z, // INPUT_ROLE_CHANGE_TARGET
|
||||
},
|
||||
|
||||
// custom user controls
|
||||
|
@ -101,6 +102,7 @@ static INPUT_SCANCODE m_Layout[INPUT_LAYOUT_NUMBER_OF][INPUT_ROLE_NUMBER_OF] = {
|
|||
SDL_SCANCODE_F2, // INPUT_ROLE_FPS
|
||||
SDL_SCANCODE_F3, // INPUT_ROLE_BILINEAR
|
||||
SDL_SCANCODE_SLASH, // INPUT_ROLE_ENTER_CONSOLE
|
||||
SDL_SCANCODE_Z, // INPUT_ROLE_CHANGE_TARGET
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -138,6 +140,7 @@ static INPUT_SCANCODE m_Layout[INPUT_LAYOUT_NUMBER_OF][INPUT_ROLE_NUMBER_OF] = {
|
|||
SDL_SCANCODE_F2, // INPUT_ROLE_FPS
|
||||
SDL_SCANCODE_F3, // INPUT_ROLE_BILINEAR
|
||||
SDL_SCANCODE_SLASH, // INPUT_ROLE_ENTER_CONSOLE
|
||||
SDL_SCANCODE_Z, // INPUT_ROLE_CHANGE_TARGET
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -175,6 +178,7 @@ static INPUT_SCANCODE m_Layout[INPUT_LAYOUT_NUMBER_OF][INPUT_ROLE_NUMBER_OF] = {
|
|||
SDL_SCANCODE_F2, // INPUT_ROLE_FPS
|
||||
SDL_SCANCODE_F3, // INPUT_ROLE_BILINEAR
|
||||
SDL_SCANCODE_SLASH, // INPUT_ROLE_ENTER_CONSOLE
|
||||
SDL_SCANCODE_Z, // INPUT_ROLE_CHANGE_TARGET
|
||||
}
|
||||
// clang-format on
|
||||
};
|
||||
|
@ -217,6 +221,7 @@ static CONTROLLER_MAP
|
|||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_FPS
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_BILINEAR
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_ENTER_CONSOLE
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_LEFTSTICK}, 0 }, // INPUT_ROLE_CHANGE_TARGET
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -254,6 +259,7 @@ static CONTROLLER_MAP
|
|||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_FPS
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_BILINEAR
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_ENTER_CONSOLE
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_LEFTSTICK}, 0 }, // INPUT_ROLE_CHANGE_TARGET
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -291,6 +297,7 @@ static CONTROLLER_MAP
|
|||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_FPS
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_BILINEAR
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_ENTER_CONSOLE
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_LEFTSTICK}, 0 }, // INPUT_ROLE_CHANGE_TARGET
|
||||
},
|
||||
|
||||
{
|
||||
|
@ -328,6 +335,7 @@ static CONTROLLER_MAP
|
|||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_FPS
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_BILINEAR
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_INVALID}, 0 }, // INPUT_ROLE_ENTER_CONSOLE
|
||||
{ BT_BUTTON, {SDL_CONTROLLER_BUTTON_LEFTSTICK}, 0 }, // INPUT_ROLE_CHANGE_TARGET
|
||||
}
|
||||
// clang-format on
|
||||
};
|
||||
|
@ -863,6 +871,7 @@ static INPUT_STATE S_Input_GetControllerState(
|
|||
state.load |= S_Input_GetBindState(INPUT_ROLE_LOAD, cntlr_layout_num);
|
||||
state.toggle_fps_counter |= S_Input_GetBindState(INPUT_ROLE_FPS, cntlr_layout_num);
|
||||
state.toggle_bilinear_filter |= S_Input_GetBindState(INPUT_ROLE_BILINEAR, cntlr_layout_num);
|
||||
state.change_target |= S_Input_GetBindState(INPUT_ROLE_CHANGE_TARGET, cntlr_layout_num);
|
||||
state.menu_confirm |= S_Input_JoyBtn(SDL_CONTROLLER_BUTTON_A);
|
||||
state.menu_back |= S_Input_JoyBtn(SDL_CONTROLLER_BUTTON_B);
|
||||
state.menu_back |= S_Input_JoyBtn(SDL_CONTROLLER_BUTTON_Y);
|
||||
|
@ -946,6 +955,7 @@ INPUT_STATE S_Input_GetCurrentState(
|
|||
linput.camera_left = S_Input_Key(INPUT_ROLE_CAMERA_LEFT, layout_num);
|
||||
linput.camera_right = S_Input_Key(INPUT_ROLE_CAMERA_RIGHT, layout_num);
|
||||
linput.camera_reset = S_Input_Key(INPUT_ROLE_CAMERA_RESET, layout_num);
|
||||
linput.change_target = S_Input_Key(INPUT_ROLE_CHANGE_TARGET, layout_num);
|
||||
|
||||
linput.item_cheat = S_Input_Key(INPUT_ROLE_ITEM_CHEAT, layout_num);
|
||||
linput.fly_cheat = S_Input_Key(INPUT_ROLE_FLY_CHEAT, layout_num);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue