1 //////////////////////////////////////////////////////////////////////////////// 2 // Scorched3D (c) 2000-2011 3 // 4 // This file is part of Scorched3D. 5 // 6 // Scorched3D is free software; you can redistribute it and/or modify 7 // it under the terms of the GNU General Public License as published by 8 // the Free Software Foundation; either version 2 of the License, or 9 // (at your option) any later version. 10 // 11 // Scorched3D is distributed in the hope that it will be useful, 12 // but WITHOUT ANY WARRANTY; without even the implied warranty of 13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 // GNU General Public License for more details. 15 // 16 // You should have received a copy of the GNU General Public License along 17 // with this program; if not, write to the Free Software Foundation, Inc., 18 // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 19 //////////////////////////////////////////////////////////////////////////////// 20 21 #if !defined(__INCLUDE_ScorchedServerh_INCLUDE__) 22 #define __INCLUDE_ScorchedServerh_INCLUDE__ 23 24 #include <engine/ScorchedContext.h> 25 #include <server/ScorchedServerSettings.h> 26 #include <string> 27 28 class ProgressCounter; 29 class TankDeadContainer; 30 class TankAIStore; 31 class EconomyStore; 32 class ServerSimulator; 33 class ServerDestinations; 34 class ServerState; 35 class ServerAuthHandler; 36 class ServerAuthHandlerStore; 37 class ServerTimedMessage; 38 class ServerBanned; 39 class ServerTextFilter; 40 class ServerHandlers; 41 class ServerLoadLevel; 42 class ServerConnectAuthHandler; 43 class ServerAdminSessions; 44 class ServerChannelManager; 45 class ServerSyncCheck; 46 class ServerMessageHandler; 47 class ServerFileServer; 48 49 class ScorchedServer : public ScorchedContext 50 { 51 public: 52 static ScorchedServer *instance(); 53 54 static bool startServer(const ScorchedServerSettings &settings, 55 bool local, ProgressCounter *counter); 56 static void stopServer(); serverStarted()57 static bool serverStarted() { return started_; } 58 getServerMode()59 virtual bool getServerMode() { return true; } 60 61 virtual Simulator &getSimulator(); getTargetSpace()62 virtual TargetSpace &getTargetSpace() { return *targetSpace_; } getTankDeadContainer()63 TankDeadContainer &getTankDeadContainer() { return *deadContainer_; } getContext()64 ScorchedContext &getContext() { return *this; } getTankAIs()65 TankAIStore &getTankAIs() { return *tankAIStore_; } getServerSimulator()66 ServerSimulator &getServerSimulator() { return *serverSimulator_; } getServerDestinations()67 ServerDestinations &getServerDestinations() { return *serverDestinations_; } getServerState()68 ServerState &getServerState() { return *serverState_; } 69 ServerAuthHandler *getAuthHandler(); getTimedMessage()70 ServerTimedMessage &getTimedMessage() { return *timedMessage_; } getBannedPlayers()71 ServerBanned &getBannedPlayers() { return *bannedPlayers_; } getTextFilter()72 ServerTextFilter &getTextFilter() { return *textFilter_; } getServerHandlers()73 ServerHandlers &getServerHandlers() { return *serverHandlers_; } getServerLoadLevel()74 ServerLoadLevel &getServerLoadLevel() { return *serverLoadLevel_; } 75 ServerConnectAuthHandler &getServerConnectAuthHandler(); getServerChannelManager()76 ServerChannelManager &getServerChannelManager() { return *serverChannelManager_; } getServerAdminSessions()77 ServerAdminSessions &getServerAdminSessions() { return *serverAdminSessions_; } getServerSyncCheck()78 ServerSyncCheck &getServerSyncCheck() { return *serverSyncCheck_; } getServerMessageHandler()79 ServerMessageHandler &getServerMessageHandler() { return *serverMessageHandler_; } getServerFileServer()80 ServerFileServer &getServerFileServer() { return *serverFileServer_; } getEconomyStore()81 EconomyStore &getEconomyStore() { return *economyStore_; } 82 83 protected: 84 static ScorchedServer *instance_; 85 static bool started_; 86 static TargetSpace *targetSpace_; 87 88 TankDeadContainer *deadContainer_; 89 TankAIStore *tankAIStore_; 90 ServerSimulator *serverSimulator_; 91 ServerDestinations *serverDestinations_; 92 ServerState *serverState_; 93 ServerAuthHandlerStore *authHandler_; 94 ServerTimedMessage *timedMessage_; 95 ServerBanned *bannedPlayers_; 96 ServerTextFilter *textFilter_; 97 ServerHandlers *serverHandlers_; 98 ServerLoadLevel *serverLoadLevel_; 99 ServerChannelManager *serverChannelManager_; 100 ServerAdminSessions *serverAdminSessions_; 101 ServerSyncCheck *serverSyncCheck_; 102 ServerMessageHandler *serverMessageHandler_; 103 ServerFileServer *serverFileServer_; 104 EconomyStore *economyStore_; 105 106 void checkSettings(); 107 bool startServerInternal(const ScorchedServerSettings &settings, 108 bool local, ProgressCounter *counter); 109 110 private: 111 ScorchedServer(); 112 virtual ~ScorchedServer(); 113 }; 114 115 #endif 116