mirror of
https://github.com/isledecomp/isle-portable.git
synced 2026-01-11 18:41:14 +00:00
Begin work on adjustable key mapping
This commit is contained in:
parent
e8140f9d51
commit
6f3f8cbc59
@ -12,6 +12,7 @@
|
||||
#include <SDL3/SDL_joystick.h>
|
||||
#include <SDL3/SDL_keyboard.h>
|
||||
#include <SDL3/SDL_keycode.h>
|
||||
#include <SDL3/SDL_scancode.h>
|
||||
#include <SDL3/SDL_timer.h>
|
||||
#ifdef MINIWIN
|
||||
#include "miniwin/windows.h"
|
||||
@ -87,7 +88,7 @@ class LegoInputManager : public MxPresenter {
|
||||
c_right = 0x02,
|
||||
c_up = 0x04,
|
||||
c_down = 0x08,
|
||||
c_ctrl = 0x10,
|
||||
c_sprint = 0x10,
|
||||
|
||||
c_leftOrRight = c_left | c_right,
|
||||
c_upOrDown = c_up | c_down
|
||||
@ -100,6 +101,14 @@ class LegoInputManager : public MxPresenter {
|
||||
e_gamepad,
|
||||
};
|
||||
|
||||
struct {
|
||||
SDL_Scancode k_forward[2] = {SDL_SCANCODE_UP, SDL_SCANCODE_KP_8};
|
||||
SDL_Scancode k_back[2] = {SDL_SCANCODE_DOWN, SDL_SCANCODE_KP_2};
|
||||
SDL_Scancode k_left[2] = {SDL_SCANCODE_LEFT, SDL_SCANCODE_KP_4};
|
||||
SDL_Scancode k_right[2] = {SDL_SCANCODE_RIGHT, SDL_SCANCODE_KP_6};
|
||||
SDL_Scancode k_sprint[2] = {SDL_SCANCODE_LCTRL, SDL_SCANCODE_RCTRL};
|
||||
} g_keyMaps;
|
||||
|
||||
LegoInputManager();
|
||||
~LegoInputManager() override;
|
||||
|
||||
|
||||
@ -623,8 +623,8 @@ MxResult LegoNavController::ProcessKeyboardInput()
|
||||
break;
|
||||
}
|
||||
|
||||
MxFloat maxAccelDivisor = keyFlags & LegoInputManager::c_ctrl ? 1.0f : 4.0f;
|
||||
MxFloat minAccelDivisor = keyFlags & LegoInputManager::c_ctrl ? 1.0f : 2.0f;
|
||||
MxFloat maxAccelDivisor = keyFlags & LegoInputManager::c_sprint ? 1.0f : 4.0f;
|
||||
MxFloat minAccelDivisor = keyFlags & LegoInputManager::c_sprint ? 1.0f : 2.0f;
|
||||
|
||||
if (!skipRotationVelAndAccelCalc) {
|
||||
m_targetRotationalVel = CalculateNewTargetVel(hMax, m_hMax / 2, m_maxRotationalVel);
|
||||
|
||||
@ -133,24 +133,24 @@ MxResult LegoInputManager::GetNavigationKeyStates(MxU32& p_keyFlags)
|
||||
|
||||
MxU32 keyFlags = 0;
|
||||
|
||||
if (m_keyboardState[SDL_SCANCODE_KP_8] || m_keyboardState[SDL_SCANCODE_UP]) {
|
||||
if (m_keyboardState[g_keyMaps.k_forward[0]] || m_keyboardState[g_keyMaps.k_forward[1]]) {
|
||||
keyFlags |= c_up;
|
||||
}
|
||||
|
||||
if ((m_keyboardState[SDL_SCANCODE_KP_2] || m_keyboardState[SDL_SCANCODE_DOWN])) {
|
||||
if ((m_keyboardState[g_keyMaps.k_back[0]] || m_keyboardState[g_keyMaps.k_back[1]])) {
|
||||
keyFlags |= c_down;
|
||||
}
|
||||
|
||||
if ((m_keyboardState[SDL_SCANCODE_KP_4] || m_keyboardState[SDL_SCANCODE_LEFT])) {
|
||||
if ((m_keyboardState[g_keyMaps.k_left[0]] || m_keyboardState[g_keyMaps.k_left[1]])) {
|
||||
keyFlags |= c_left;
|
||||
}
|
||||
|
||||
if ((m_keyboardState[SDL_SCANCODE_KP_6] || m_keyboardState[SDL_SCANCODE_RIGHT])) {
|
||||
if ((m_keyboardState[g_keyMaps.k_right[0]] || m_keyboardState[g_keyMaps.k_right[1]])) {
|
||||
keyFlags |= c_right;
|
||||
}
|
||||
|
||||
if (m_keyboardState[SDL_SCANCODE_LCTRL] || m_keyboardState[SDL_SCANCODE_RCTRL]) {
|
||||
keyFlags |= c_ctrl;
|
||||
if (m_keyboardState[g_keyMaps.k_sprint[0]] || m_keyboardState[g_keyMaps.k_sprint[1]]) {
|
||||
keyFlags |= c_sprint;
|
||||
}
|
||||
|
||||
GetNavigationTouchStates(keyFlags);
|
||||
|
||||
Loading…
Reference in New Issue
Block a user