summaryrefslogtreecommitdiffstats
path: root/source/Root.h
diff options
context:
space:
mode:
authormadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-09-24 00:09:57 +0200
committermadmaxoft@gmail.com <madmaxoft@gmail.com@0a769ca7-a7f5-676a-18bf-c427514a06d6>2012-09-24 00:09:57 +0200
commitecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26 (patch)
tree898e37fe747f0fdcefeb88f833557fd45db3347c /source/Root.h
parentSource files cleanup: ChunkDataSerializer is Protocol-related (diff)
downloadcuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.gz
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.bz2
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.lz
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.xz
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.tar.zst
cuberite-ecfe6ab65bd1fc2c7f5733fe6ef4e6ddaac44a26.zip
Diffstat (limited to 'source/Root.h')
-rw-r--r--source/Root.h120
1 files changed, 120 insertions, 0 deletions
diff --git a/source/Root.h b/source/Root.h
new file mode 100644
index 000000000..5a2238332
--- /dev/null
+++ b/source/Root.h
@@ -0,0 +1,120 @@
+
+#pragma once
+
+
+
+
+#include "Authenticator.h"
+
+
+
+
+
+class cThread;
+class cMonsterConfig;
+class cGroupManager;
+class cCraftingRecipes;
+class cFurnaceRecipe;
+class cWebAdmin;
+class cPluginManager;
+class cServer;
+class cWorld;
+class cPlayer;
+typedef cItemCallback<cPlayer> cPlayerListCallback;
+typedef cItemCallback<cWorld> cWorldListCallback;
+
+
+
+
+
+class cRoot //tolua_export
+{ //tolua_export
+public:
+ static cRoot* Get() { return s_Root; } //tolua_export
+
+ cRoot(void);
+ ~cRoot();
+
+ void Start(void);
+
+ cServer * GetServer(void) { return m_Server; } //tolua_export
+ cWorld * GetDefaultWorld(void); //tolua_export
+ cWorld * GetWorld(const AString & a_WorldName); //tolua_export
+
+ /// Calls the callback for each world; returns true if the callback didn't abort (return true)
+ bool ForEachWorld(cWorldListCallback & a_Callback); // >> Exported in ManualBindings <<
+
+ /// Logs chunkstats for each world and totals
+ void LogChunkStats(void);
+
+ cMonsterConfig * GetMonsterConfig() { return m_MonsterConfig; }
+
+ cGroupManager * GetGroupManager (void) { return m_GroupManager; } // tolua_export
+ cCraftingRecipes * GetCraftingRecipes(void) { return m_CraftingRecipes; } // tolua_export
+ cFurnaceRecipe * GetFurnaceRecipe (void) { return m_FurnaceRecipe; } // tolua_export
+ cWebAdmin * GetWebAdmin (void) { return m_WebAdmin; } // tolua_export
+ cPluginManager * GetPluginManager (void) { return m_PluginManager; } // tolua_export
+ cAuthenticator & GetAuthenticator (void) { return m_Authenticator; }
+
+ void ServerCommand(const AString & a_Cmd); //tolua_export
+
+ void KickUser(int a_ClientID, const AString & a_Reason); // Kicks the user, no matter in what world they are. Used from cAuthenticator
+ void AuthenticateUser(int a_ClientID); // Called by cAuthenticator to auth the specified user
+
+ void TickWorlds( float a_Dt );
+
+ /// Returns the number of chunks loaded
+ int GetTotalChunkCount(void); // tolua_export
+
+ /// Saves all chunks in all worlds
+ void SaveAllChunks(void);
+
+ /// Calls the callback for each player in all worlds
+ bool ForEachPlayer(cPlayerListCallback & a_Callback); // >> EXPORTED IN MANUALBINDINGS <<
+
+ /// Finds a player from a partial or complete player name and calls the callback - case-insensitive
+ bool FindAndDoWithPlayer(const AString & a_PlayerName, cPlayerListCallback & a_Callback); // >> EXPORTED IN MANUALBINDINGS <<
+
+private:
+ void LoadGlobalSettings();
+
+ /// Loads the worlds from settings.ini, creates the worldmap
+ void LoadWorlds(void);
+
+ /// Starts each world's life
+ void StartWorlds(void);
+
+ /// Stops each world's threads, so that it's safe to unload them
+ void StopWorlds(void);
+
+ /// Unloads all worlds from memory
+ void UnloadWorlds(void);
+
+ cServer * m_Server;
+ cMonsterConfig * m_MonsterConfig;
+
+ cGroupManager * m_GroupManager;
+ cCraftingRecipes * m_CraftingRecipes;
+ cFurnaceRecipe * m_FurnaceRecipe;
+ cWebAdmin * m_WebAdmin;
+ cPluginManager * m_PluginManager;
+ cAuthenticator m_Authenticator;
+
+ cMCLogger * m_Log;
+
+ bool m_bStop;
+ bool m_bRestart;
+
+ typedef std::map< AString, cWorld* > WorldMap;
+ cWorld* m_pDefaultWorld;
+ WorldMap m_WorldsByName;
+
+ cThread* m_InputThread;
+ static void InputThread(void* a_Params);
+
+ static cRoot* s_Root;
+}; //tolua_export
+
+
+
+