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:
parent
7892541383
commit
63701de45f
3 changed files with 29 additions and 2 deletions
|
@ -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);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue