Fix TF2_OnIsHolidayActive forward not getting called after map change (#1752)
* Fix TF2_IsHolidayActive forward not getting called after map change * Rename function to Unhook
This commit is contained in:
parent
a877a4475b
commit
a1ad9e1acf
@ -55,7 +55,7 @@ void HolidayManager::OnSDKLoad(bool bLate)
|
|||||||
|
|
||||||
void HolidayManager::OnSDKUnload()
|
void HolidayManager::OnSDKUnload()
|
||||||
{
|
{
|
||||||
UnhookIfNecessary();
|
Unhook();
|
||||||
SH_REMOVE_HOOK(IServerGameDLL, LevelShutdown, gamedll, SH_MEMBER(this, &HolidayManager::Hook_LevelShutdown), false);
|
SH_REMOVE_HOOK(IServerGameDLL, LevelShutdown, gamedll, SH_MEMBER(this, &HolidayManager::Hook_LevelShutdown), false);
|
||||||
|
|
||||||
plsys->RemovePluginsListener(this);
|
plsys->RemovePluginsListener(this);
|
||||||
@ -72,7 +72,7 @@ void HolidayManager::OnServerActivated()
|
|||||||
void HolidayManager::Hook_LevelShutdown()
|
void HolidayManager::Hook_LevelShutdown()
|
||||||
{
|
{
|
||||||
// GameRules is going away momentarily. Unhook before it does.
|
// GameRules is going away momentarily. Unhook before it does.
|
||||||
UnhookIfNecessary();
|
Unhook();
|
||||||
|
|
||||||
m_bInMap = false;
|
m_bInMap = false;
|
||||||
}
|
}
|
||||||
@ -112,16 +112,12 @@ void HolidayManager::HookIfNecessary()
|
|||||||
m_iHookID = SH_ADD_MANUALHOOK(IsHolidayActive, pGameRules, SH_MEMBER(this, &HolidayManager::Hook_IsHolidayActive), false);
|
m_iHookID = SH_ADD_MANUALHOOK(IsHolidayActive, pGameRules, SH_MEMBER(this, &HolidayManager::Hook_IsHolidayActive), false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HolidayManager::UnhookIfNecessary()
|
void HolidayManager::Unhook()
|
||||||
{
|
{
|
||||||
// Not hooked
|
// Not hooked
|
||||||
if (!m_iHookID)
|
if (!m_iHookID)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// We're still wanted
|
|
||||||
if (m_isHolidayForward->GetFunctionCount() > 0)
|
|
||||||
return;
|
|
||||||
|
|
||||||
SH_REMOVE_HOOK_ID(m_iHookID);
|
SH_REMOVE_HOOK_ID(m_iHookID);
|
||||||
m_iHookID = 0;
|
m_iHookID = 0;
|
||||||
}
|
}
|
||||||
@ -165,7 +161,11 @@ void HolidayManager::OnPluginLoaded(IPlugin *plugin)
|
|||||||
|
|
||||||
void HolidayManager::OnPluginUnloaded(IPlugin *plugin)
|
void HolidayManager::OnPluginUnloaded(IPlugin *plugin)
|
||||||
{
|
{
|
||||||
UnhookIfNecessary();
|
// We're still wanted
|
||||||
|
if (m_isHolidayForward->GetFunctionCount() > 0)
|
||||||
|
return;
|
||||||
|
|
||||||
|
Unhook();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool HolidayManager::Hook_IsHolidayActive(int holiday)
|
bool HolidayManager::Hook_IsHolidayActive(int holiday)
|
||||||
|
@ -57,7 +57,7 @@ private:
|
|||||||
bool IsHookEnabled() const { return m_iHookID != 0; }
|
bool IsHookEnabled() const { return m_iHookID != 0; }
|
||||||
void *GetGameRules();
|
void *GetGameRules();
|
||||||
void HookIfNecessary();
|
void HookIfNecessary();
|
||||||
void UnhookIfNecessary();
|
void Unhook();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_iHookID;
|
int m_iHookID;
|
||||||
|
Loading…
Reference in New Issue
Block a user