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
|
@ -111,6 +111,12 @@ doubletap_jump (Double tap jump for fly) bool false
|
|||
# enabled.
|
||||
always_fly_fast (Always fly fast) bool true
|
||||
|
||||
# If enabled, the "Sneak" key will toggle when pressed.
|
||||
toggle_sneak_key (Toggle Sneak key) bool false
|
||||
|
||||
# If enabled, the "Aux1" key will toggle when pressed.
|
||||
toggle_aux1_key (Toggle Aux1 key) bool false
|
||||
|
||||
# The time in seconds it takes between repeated node placements when holding
|
||||
# the place button.
|
||||
#
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -356,6 +356,8 @@ void set_default_settings()
|
|||
settings->setDefault("aux1_descends", "false");
|
||||
settings->setDefault("doubletap_jump", "false");
|
||||
settings->setDefault("always_fly_fast", "true");
|
||||
settings->setDefault("toggle_sneak_key", "false");
|
||||
settings->setDefault("toggle_aux1_key", "false");
|
||||
settings->setDefault("autojump", bool_to_cstr(has_touch));
|
||||
settings->setDefault("continuous_forward", "false");
|
||||
settings->setDefault("enable_joysticks", "false");
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue