@@ -76,22 +76,18 @@ Player::Player(const char *name, IItemDefManager *idef):
76
76
hud_hotbar_itemcount = HUD_HOTBAR_ITEMCOUNT_DEFAULT;
77
77
78
78
m_player_settings.readGlobalSettings ();
79
- g_settings->registerChangedCallback (" free_move" , &Player::settingsChangedCallback,
80
- &m_player_settings);
81
- g_settings->registerChangedCallback (" fast_move" , &Player::settingsChangedCallback,
82
- &m_player_settings);
83
- g_settings->registerChangedCallback (" continuous_forward" ,
79
+ // Register player setting callbacks
80
+ for (const std::string &name : m_player_settings.setting_names )
81
+ g_settings->registerChangedCallback (name,
84
82
&Player::settingsChangedCallback, &m_player_settings);
85
- g_settings->registerChangedCallback (" always_fly_fast" ,
86
- &Player::settingsChangedCallback, &m_player_settings);
87
- g_settings->registerChangedCallback (" aux1_descends" ,
88
- &Player::settingsChangedCallback, &m_player_settings);
89
- g_settings->registerChangedCallback (
90
- " noclip" , &Player::settingsChangedCallback, &m_player_settings);
91
83
}
92
84
93
85
Player::~Player ()
94
86
{
87
+ // m_player_settings becomes invalid, remove callbacks
88
+ for (const std::string &name : m_player_settings.setting_names )
89
+ g_settings->deregisterChangedCallback (name,
90
+ &Player::settingsChangedCallback, &m_player_settings);
95
91
clearHud ();
96
92
}
97
93
0 commit comments