added a forward that helps prevent against race conditions in map config plugins

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%402162
This commit is contained in:
David Anderson 2008-05-21 02:12:12 +00:00
parent 47fa9d9464
commit 40e0857a29
2 changed files with 22 additions and 0 deletions

View File

@ -49,6 +49,7 @@ ConVar sm_corecfgfile("sm_corecfgfile", "addons/sourcemod/configs/core.cfg", 0,
IForward *g_pOnServerCfg = NULL; IForward *g_pOnServerCfg = NULL;
IForward *g_pOnConfigsExecuted = NULL; IForward *g_pOnConfigsExecuted = NULL;
IForward *g_pOnAutoConfigsBuffered = NULL;
CoreConfig g_CoreConfig; CoreConfig g_CoreConfig;
bool g_bConfigsExecd = false; bool g_bConfigsExecd = false;
@ -57,6 +58,7 @@ void CoreConfig::OnSourceModAllInitialized()
g_RootMenu.AddRootConsoleCommand("config", "Set core configuration options", this); g_RootMenu.AddRootConsoleCommand("config", "Set core configuration options", this);
g_pOnServerCfg = g_Forwards.CreateForward("OnServerCfg", ET_Ignore, 0, NULL); g_pOnServerCfg = g_Forwards.CreateForward("OnServerCfg", ET_Ignore, 0, NULL);
g_pOnConfigsExecuted = g_Forwards.CreateForward("OnConfigsExecuted", ET_Ignore, 0, NULL); g_pOnConfigsExecuted = g_Forwards.CreateForward("OnConfigsExecuted", ET_Ignore, 0, NULL);
g_pOnAutoConfigsBuffered = g_Forwards.CreateForward("OnAutoConfigsBuffered", ET_Ignore, 0, NULL);
} }
void CoreConfig::OnSourceModShutdown() void CoreConfig::OnSourceModShutdown()
@ -64,6 +66,7 @@ void CoreConfig::OnSourceModShutdown()
g_RootMenu.RemoveRootConsoleCommand("config", this); g_RootMenu.RemoveRootConsoleCommand("config", this);
g_Forwards.ReleaseForward(g_pOnServerCfg); g_Forwards.ReleaseForward(g_pOnServerCfg);
g_Forwards.ReleaseForward(g_pOnConfigsExecuted); g_Forwards.ReleaseForward(g_pOnConfigsExecuted);
g_Forwards.ReleaseForward(g_pOnAutoConfigsBuffered);
} }
void CoreConfig::OnSourceModLevelChange(const char *mapName) void CoreConfig::OnSourceModLevelChange(const char *mapName)
@ -403,6 +406,8 @@ void SM_ExecuteAllConfigs()
} }
iter->Release(); iter->Release();
g_pOnAutoConfigsBuffered->Execute(NULL);
engine->ServerCommand("sm internal 1\n"); engine->ServerCommand("sm internal 1\n");
} }

View File

@ -168,6 +168,23 @@ forward OnMapEnd();
*/ */
forward OnConfigsExecuted(); forward OnConfigsExecuted();
/**
* This is called once, right after OnMapStart() but any time before
* OnConfigsExecuted(). It is called after the "exec sourcemod.cfg"
* command and all AutoExecConfig() exec commands have been added to
* the ServerCommand() buffer.
*
* If you need to load per-map settings that override default values,
* adding commands to the ServerCommand() buffer here will guarantee
* that they're set before OnConfigsExecuted().
*
* Unlike OnMapStart() and OnConfigsExecuted(), this is not called on
* late loads that occur after OnMapStart().
*
* @noreturn
*/
forward OnAutoConfigsBuffered();
/** /**
* @deprecated Use OnConfigsExecuted() instead. * @deprecated Use OnConfigsExecuted() instead.
*/ */