From 3eac24946418d787697077cc1806856e514ba5f4 Mon Sep 17 00:00:00 2001 From: Ben Deutsch Date: Wed, 18 Apr 2018 20:56:01 +0200 Subject: PlayerSettings struct for player movement code (#7243) Instead of calling g_settings->getBool("flag") multiple times during each movement step, the current settings are cached in a new player object member. Updated via registered callbacks. --- src/player.cpp | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) (limited to 'src/player.cpp') diff --git a/src/player.cpp b/src/player.cpp index 1ff953253..c7036663a 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -74,6 +74,20 @@ Player::Player(const char *name, IItemDefManager *idef): HUD_FLAG_MINIMAP_RADAR_VISIBLE; hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT; + + m_player_settings.readGlobalSettings(); + g_settings->registerChangedCallback("free_move", &Player::settingsChangedCallback, + &m_player_settings); + g_settings->registerChangedCallback("fast_move", &Player::settingsChangedCallback, + &m_player_settings); + g_settings->registerChangedCallback("continuous_forward", + &Player::settingsChangedCallback, &m_player_settings); + g_settings->registerChangedCallback("always_fly_fast", + &Player::settingsChangedCallback, &m_player_settings); + g_settings->registerChangedCallback("aux1_descends", + &Player::settingsChangedCallback, &m_player_settings); + g_settings->registerChangedCallback( + "noclip", &Player::settingsChangedCallback, &m_player_settings); } Player::~Player() @@ -126,3 +140,18 @@ void Player::clearHud() hud.pop_back(); } } + +void PlayerSettings::readGlobalSettings() +{ + free_move = g_settings->getBool("free_move"); + fast_move = g_settings->getBool("fast_move"); + continuous_forward = g_settings->getBool("continuous_forward"); + always_fly_fast = g_settings->getBool("always_fly_fast"); + aux1_descends = g_settings->getBool("aux1_descends"); + noclip = g_settings->getBool("noclip"); +} + +void Player::settingsChangedCallback(const std::string &name, void *data) +{ + ((PlayerSettings *)data)->readGlobalSettings(); +} -- cgit v1.2.3