2011-10-03 11:41:19 -07:00
|
|
|
|
2012-02-13 13:47:03 -08:00
|
|
|
#pragma once
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
struct lua_State;
|
|
|
|
class cLuaCommandBinder;
|
|
|
|
class cPlugin;
|
|
|
|
class cPlugin_Lua;
|
|
|
|
class cPluginManager //tolua_export
|
|
|
|
{ //tolua_export
|
|
|
|
public: //tolua_export
|
|
|
|
|
|
|
|
// Called each tick
|
|
|
|
virtual void Tick(float a_Dt);
|
|
|
|
|
|
|
|
enum PluginHook //tolua_export
|
|
|
|
{ //tolua_export
|
|
|
|
E_PLUGIN_TICK, //tolua_export
|
|
|
|
E_PLUGIN_CHAT, //tolua_export
|
|
|
|
E_PLUGIN_COLLECT_ITEM, //tolua_export
|
|
|
|
E_PLUGIN_BLOCK_DIG, //tolua_export
|
|
|
|
E_PLUGIN_BLOCK_PLACE, //tolua_export
|
|
|
|
E_PLUGIN_DISCONNECT, //tolua_export
|
|
|
|
E_PLUGIN_HANDSHAKE, //tolua_export
|
|
|
|
E_PLUGIN_LOGIN, //tolua_export
|
|
|
|
E_PLUGIN_PLAYER_SPAWN, //tolua_export
|
|
|
|
E_PLUGIN_PLAYER_JOIN, //tolua_export
|
|
|
|
E_PLUGIN_PLAYER_MOVE, //tolua_export
|
|
|
|
E_PLUGIN_TAKE_DAMAGE, //tolua_export
|
|
|
|
E_PLUGIN_KILLED, //tolua_export
|
|
|
|
}; //tolua_export
|
|
|
|
|
|
|
|
static cPluginManager * GetPluginManager(); //tolua_export
|
|
|
|
|
|
|
|
typedef std::list< cPlugin* > PluginList;
|
2012-03-28 11:11:06 -07:00
|
|
|
cPlugin* GetPlugin( const char* a_Plugin ) const; //tolua_export
|
|
|
|
const PluginList & GetAllPlugins() const; // >> EXPORTED IN MANUALBINDINGS <<
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
void ReloadPlugins(); //tolua_export
|
|
|
|
bool AddPlugin( cPlugin* a_Plugin );
|
|
|
|
bool AddPlugin( lua_State* a_LuaState, cPlugin* a_Plugin ); //tolua_export
|
|
|
|
bool AddLuaPlugin( cPlugin_Lua* a_Plugin );
|
|
|
|
void AddHook( cPlugin* a_Plugin, PluginHook a_Hook ); //tolua_export
|
|
|
|
|
2012-03-28 11:11:06 -07:00
|
|
|
unsigned int GetNumPlugins() const; //tolua_export
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
bool CallHook( PluginHook a_Hook, unsigned int a_NumArgs, ... );
|
|
|
|
|
2011-11-07 17:25:01 -08:00
|
|
|
void RemoveHooks( cPlugin* a_Plugin );
|
2011-10-03 11:41:19 -07:00
|
|
|
void RemovePlugin( cPlugin* a_Plugin, bool a_bDelete = false ); //tolua_export
|
|
|
|
void RemoveLuaPlugin( std::string a_FileName ); //tolua_export
|
|
|
|
cPlugin_Lua* GetLuaPlugin( lua_State* a_State ); //tolua_export
|
|
|
|
|
2012-03-28 11:11:06 -07:00
|
|
|
cLuaCommandBinder* GetLuaCommandBinder() const { return m_LuaCommandBinder; }
|
|
|
|
|
|
|
|
bool HasPlugin( cPlugin* a_Plugin ) const;
|
2011-10-03 11:41:19 -07:00
|
|
|
private:
|
|
|
|
friend class cRoot;
|
|
|
|
cPluginManager();
|
|
|
|
~cPluginManager();
|
|
|
|
|
2012-03-28 11:11:06 -07:00
|
|
|
typedef std::list< cPlugin_Lua* > LuaPluginList;
|
|
|
|
typedef std::map< cPluginManager::PluginHook, cPluginManager::PluginList > HookMap;
|
|
|
|
|
|
|
|
LuaPluginList m_LuaPlugins;
|
|
|
|
PluginList m_Plugins;
|
|
|
|
HookMap m_Hooks;
|
2011-10-03 11:41:19 -07:00
|
|
|
|
|
|
|
void ReloadPluginsNow();
|
|
|
|
void UnloadPluginsNow();
|
|
|
|
|
|
|
|
cLuaCommandBinder* m_LuaCommandBinder;
|
|
|
|
|
|
|
|
bool m_bReloadPlugins;
|
|
|
|
}; //tolua_export
|