1
0
cuberite-2a/source/cPluginManager.h

70 lines
2.3 KiB
C
Raw Normal View History

#pragma once
#include <list>
#include <string> // TODO - use const char*
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;
cPlugin* GetPlugin( std::string a_Plugin ); //tolua_export
const PluginList & GetAllPlugins(); // >> EXPORTED IN MANUALBINDINGS <<
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
unsigned int GetNumPlugins(); //tolua_export
bool CallHook( PluginHook a_Hook, unsigned int a_NumArgs, ... );
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
cLuaCommandBinder* GetLuaCommandBinder() { return m_LuaCommandBinder; }
private:
friend class cRoot;
cPluginManager();
~cPluginManager();
struct sPluginManagerState;
sPluginManagerState* m_pState;
void ReloadPluginsNow();
void UnloadPluginsNow();
cLuaCommandBinder* m_LuaCommandBinder;
bool m_bReloadPlugins;
}; //tolua_export