1.1 --- a/core/systems/PluginSys.cpp Sat Dec 16 22:30:58 2006 +0000
1.2 +++ b/core/systems/PluginSys.cpp Sat Dec 16 22:31:32 2006 +0000
1.3 @@ -1,11 +1,13 @@
1.4 #include <stdio.h>
1.5 #include "PluginSys.h"
1.6 #include "LibrarySys.h"
1.7 +#include "HandleSys.h"
1.8 #include "sourcemm_api.h"
1.9 #include "sourcemod.h"
1.10 #include "CTextParsers.h"
1.11
1.12 CPluginManager g_PluginSys;
1.13 +HandleType_t g_PluginType = 0;
1.14
1.15 CPlugin::CPlugin(const char *file)
1.16 {
1.17 @@ -20,6 +22,8 @@
1.18 m_pub_funcs = NULL;
1.19 m_errormsg[256] = '\0';
1.20 snprintf(m_filename, sizeof(m_filename), "%s", file);
1.21 + /* :TODO: ShareSys token */
1.22 + m_handle = g_HandleSys.CreateHandle(g_PluginType, this, DEFAULT_IDENTITY, 1);
1.23 }
1.24
1.25 CPlugin::~CPlugin()
1.26 @@ -441,6 +445,11 @@
1.27 return true;
1.28 }
1.29
1.30 +IdentityToken_t CPlugin::GetIdentity()
1.31 +{
1.32 + return 0;
1.33 +}
1.34 +
1.35 /*******************
1.36 * PLUGIN ITERATOR *
1.37 *******************/
1.38 @@ -1078,3 +1087,25 @@
1.39 {
1.40 return (m_AllPluginsLoaded || g_SourceMod.IsLateLoadInMap());
1.41 }
1.42 +
1.43 +void CPluginManager::OnSourceModAllInitialized()
1.44 +{
1.45 + HandleSecurity sec;
1.46 +
1.47 + sec.owner = 1; /* :TODO: implement ShareSys */
1.48 + sec.all.canCreate = false;
1.49 + sec.all.canDelete = false;
1.50 + sec.all.canInherit = false;
1.51 +
1.52 + g_PluginType = g_HandleSys.CreateTypeEx("IPlugin", this, 0, &sec);
1.53 +}
1.54 +
1.55 +void CPluginManager::OnSourceModShutdown()
1.56 +{
1.57 + g_HandleSys.RemoveType(g_PluginType, 1);
1.58 +}
1.59 +
1.60 +void CPluginManager::OnHandleDestroy(HandleType_t type, void *object)
1.61 +{
1.62 + /* We don't care about the internal object, actually */
1.63 +}