Attend to review, re-arrange blank lines, update lua_api.txt
[oweals/minetest.git] / src / player.cpp
index 9c321d57192faba116f9516c7914b14ce5604f3d..9beeab74e4f4da8d60bb8342af5fba69ee04d842 100644 (file)
@@ -30,11 +30,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
 
 
 Player::Player(const char *name, IItemDefManager *idef):
-       inventory(idef),
-       peer_id(PEER_ID_INEXISTENT),
-       keyPressed(0),
-// protected
-       m_speed(0,0,0)
+       inventory(idef)
 {
        strlcpy(m_name, name, PLAYERNAME_SIZE);
 
@@ -73,13 +69,24 @@ Player::Player(const char *name, IItemDefManager *idef):
        hud_flags =
                HUD_FLAG_HOTBAR_VISIBLE    | HUD_FLAG_HEALTHBAR_VISIBLE |
                HUD_FLAG_CROSSHAIR_VISIBLE | HUD_FLAG_WIELDITEM_VISIBLE |
-               HUD_FLAG_BREATHBAR_VISIBLE | HUD_FLAG_MINIMAP_VISIBLE;
+               HUD_FLAG_BREATHBAR_VISIBLE | HUD_FLAG_MINIMAP_VISIBLE   |
+               HUD_FLAG_MINIMAP_RADAR_VISIBLE;
 
        hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT;
+
+       m_player_settings.readGlobalSettings();
+       // Register player setting callbacks
+       for (const std::string &name : m_player_settings.setting_names)
+               g_settings->registerChangedCallback(name,
+                       &Player::settingsChangedCallback, &m_player_settings);
 }
 
 Player::~Player()
 {
+       // m_player_settings becomes invalid, remove callbacks
+       for (const std::string &name : m_player_settings.setting_names)
+               g_settings->deregisterChangedCallback(name,
+                       &Player::settingsChangedCallback, &m_player_settings);
        clearHud();
 }
 
@@ -128,3 +135,20 @@ void Player::clearHud()
                hud.pop_back();
        }
 }
+
+void PlayerSettings::readGlobalSettings()
+{
+       free_move = g_settings->getBool("free_move");
+       pitch_move = g_settings->getBool("pitch_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");
+       autojump = g_settings->getBool("autojump");
+}
+
+void Player::settingsChangedCallback(const std::string &name, void *data)
+{
+       ((PlayerSettings *)data)->readGlobalSettings();
+}