- removed OnServerCfg in favor of OnConfigsExecuted

- added AutoExecConfig() which automates safe config execution

--HG--
extra : convert_revision : svn%3A39bc706e-5318-0410-9160-8a85361fbb7c/trunk%40984
This commit is contained in:
David Anderson
2007-06-18 07:04:22 +00:00
parent 33b2d04e2d
commit 254fc2557a
14 changed files with 447 additions and 100 deletions
+41 -5
View File
@@ -27,6 +27,7 @@
#include "sm_stringutil.h"
#include "ConCmdManager.h"
#include "PlayerManager.h"
#include "CoreConfig.h"
CPluginManager g_PluginSys;
HandleType_t g_PluginType = 0;
@@ -85,6 +86,11 @@ CPlugin::~CPlugin()
{
sm_trie_destroy(m_pProps);
}
for (size_t i=0; i<m_configs.size(); i++)
{
delete m_configs[i];
}
m_configs.clear();
}
void CPlugin::InitIdentity()
@@ -309,12 +315,9 @@ void CPlugin::Call_OnPluginStart()
pFunction->Execute(NULL);
}
}
if (g_ConCmds.IsServerCfgDone())
if (SM_AreConfigsExecuted())
{
if ((pFunction = m_ctx.base->GetFunctionByName("OnServerCfg")) != NULL)
{
pFunction->Execute(NULL);
}
SM_ExecuteForPlugin(GetBaseContext());
}
}
}
@@ -618,6 +621,32 @@ void CPlugin::DependencyDropped(CPlugin *pOwner)
m_dependsOn.remove(pOwner);
}
unsigned int CPlugin::GetConfigCount()
{
return (unsigned int)m_configs.size();
}
AutoConfig *CPlugin::GetConfig(unsigned int i)
{
if (i >= GetConfigCount())
{
return NULL;
}
return m_configs[i];
}
void CPlugin::AddConfig(bool autoCreate, const char *cfg, const char *folder)
{
AutoConfig *c = new AutoConfig;
c->autocfg = cfg;
c->folder = folder;
c->create = autoCreate;
m_configs.push_back(c);
}
/*******************
* PLUGIN ITERATOR *
*******************/
@@ -1971,3 +2000,10 @@ CPlugin *CPluginManager::GetPluginFromIdentity(IdentityToken_t *pToken)
return (CPlugin *)(pToken->ptr);
}
void CPluginManager::ExecAndGenPluginConfs()
{
List<CPlugin *>::iterator iter;
//for (iter =
}