1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-06-27 16:36:03 +00:00

Make Sneak and Aux1 optionally togglable (#15785)

This commit is contained in:
Medley 2025-03-06 21:01:43 +01:00 committed by GitHub
parent 7892541383
commit 63701de45f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 29 additions and 2 deletions

View file

@ -560,6 +560,7 @@ protected:
void updateCameraDirection(CameraOrientation *cam, float dtime);
void updateCameraOrientation(CameraOrientation *cam, float dtime);
bool getTogglableKeyState(GameKeyType key, bool toggling_enabled, bool prev_key_state);
void updatePlayerControl(const CameraOrientation &cam);
void updatePauseState();
void step(f32 dtime);
@ -746,6 +747,8 @@ private:
* a later release.
*/
bool m_cache_doubletap_jump;
bool m_cache_toggle_sneak_key;
bool m_cache_toggle_aux1_key;
bool m_cache_enable_joysticks;
bool m_cache_enable_fog;
bool m_cache_enable_noclip;
@ -791,6 +794,10 @@ Game::Game() :
&settingChangedCallback, this);
g_settings->registerChangedCallback("doubletap_jump",
&settingChangedCallback, this);
g_settings->registerChangedCallback("toggle_sneak_key",
&settingChangedCallback, this);
g_settings->registerChangedCallback("toggle_aux1_key",
&settingChangedCallback, this);
g_settings->registerChangedCallback("enable_joysticks",
&settingChangedCallback, this);
g_settings->registerChangedCallback("enable_fog",
@ -2427,6 +2434,16 @@ void Game::updateCameraOrientation(CameraOrientation *cam, float dtime)
}
// Get the state of an optionally togglable key
bool Game::getTogglableKeyState(GameKeyType key, bool toggling_enabled, bool prev_key_state)
{
if (!toggling_enabled)
return isKeyDown(key);
else
return prev_key_state ^ wasKeyPressed(key);
}
void Game::updatePlayerControl(const CameraOrientation &cam)
{
LocalPlayer *player = client->getEnv().getLocalPlayer();
@ -2439,8 +2456,8 @@ void Game::updatePlayerControl(const CameraOrientation &cam)
isKeyDown(KeyType::LEFT),
isKeyDown(KeyType::RIGHT),
isKeyDown(KeyType::JUMP) || player->getAutojump(),
isKeyDown(KeyType::AUX1),
isKeyDown(KeyType::SNEAK),
getTogglableKeyState(KeyType::AUX1, m_cache_toggle_aux1_key, player->control.aux1),
getTogglableKeyState(KeyType::SNEAK, m_cache_toggle_sneak_key, player->control.sneak),
isKeyDown(KeyType::ZOOM),
isKeyDown(KeyType::DIG),
isKeyDown(KeyType::PLACE),
@ -4100,6 +4117,8 @@ void Game::readSettings()
m_chat_log_buf.setLogLevel(chat_log_level);
m_cache_doubletap_jump = g_settings->getBool("doubletap_jump");
m_cache_toggle_sneak_key = g_settings->getBool("toggle_sneak_key");
m_cache_toggle_aux1_key = g_settings->getBool("toggle_aux1_key");
m_cache_enable_joysticks = g_settings->getBool("enable_joysticks");
m_cache_enable_fog = g_settings->getBool("enable_fog");
m_cache_mouse_sensitivity = g_settings->getFloat("mouse_sensitivity", 0.001f, 10.0f);