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_ScorchedContexth_INCLUDE__)
22 #define __INCLUDE_ScorchedContexth_INCLUDE__
23 
24 class AccessoryStore;
25 class ActionController;
26 class TargetSpace;
27 class TargetContainer;
28 class TargetMovement;
29 class LandscapeMaps;
30 class ComsMessageHandler;
31 class NetInterface;
32 class OptionsScorched;
33 class OptionsTransient;
34 class ModFiles;
35 class LandscapeDefinitions;
36 class TargetContainer;
37 class TanketContainer;
38 class TankModelStore;
39 class TanketTypes;
40 class TankTeamScore;
41 class LUAScriptFactory;
42 class LUAScriptHook;
43 class Simulator;
44 class TankAIStrings;
45 class ObjectGroups;
46 
47 class ScorchedContext
48 {
49 public:
50 	ScorchedContext(const char *name);
51 	virtual ~ScorchedContext();
52 
53 	virtual bool getServerMode() = 0;
54 
setNetInterface(NetInterface * i)55 	void setNetInterface(NetInterface *i) { netInterface_ = i; }
getNetInterface()56 	NetInterface &getNetInterface() { return *netInterface_; }
getNetInterfaceValid()57 	bool getNetInterfaceValid() { return netInterface_ != 0; }
58 
59 	virtual TargetSpace &getTargetSpace() = 0;
60 	virtual Simulator &getSimulator() = 0;
getAccessoryStore()61 	AccessoryStore &getAccessoryStore() { return *accessoryStore_; }
getTargetContainer()62 	TargetContainer &getTargetContainer() { return *targetContainer_; }
getTargetMovement()63 	TargetMovement &getTargetMovement() { return *targetMovement_; }
getTankTeamScore()64 	TankTeamScore &getTankTeamScore() { return *tankTeamScore_; }
65 	ActionController &getActionController();
getLandscapeMaps()66 	LandscapeMaps &getLandscapeMaps() { return *landscapeMaps_; }
getOptionsGame()67 	OptionsScorched &getOptionsGame() { return *optionsGame_; }
getOptionsTransient()68 	OptionsTransient &getOptionsTransient() { return *optionsTransient_; }
getComsMessageHandler()69 	ComsMessageHandler &getComsMessageHandler() { return *comsMessageHandler_; }
getModFiles()70 	ModFiles &getModFiles() { return *modFiles_; }
getLandscapes()71 	LandscapeDefinitions &getLandscapes() { return *landscapes_; }
getTanketTypes()72 	TanketTypes &getTanketTypes() { return *tanketTypes_; }
getTankModels()73 	TankModelStore &getTankModels() { return *tankModelStore_; }
getLUAScriptFactory()74 	LUAScriptFactory &getLUAScriptFactory() { return *luaScriptFactory_; }
getLUAScriptHook()75 	LUAScriptHook &getLUAScriptHook() { return *luaScriptHook_; }
getTankAIStrings()76 	TankAIStrings &getTankAIStrings() { return *tankAIStrings_; }
getObjectGroups()77 	ObjectGroups &getObjectGroups() { return *objectGroups_; }
78 
79 protected:
80 	LandscapeMaps *landscapeMaps_;
81 	ComsMessageHandler *comsMessageHandler_;
82 	NetInterface *netInterface_;
83 	OptionsScorched *optionsGame_;
84 	OptionsTransient *optionsTransient_;
85 	ModFiles *modFiles_;
86 	AccessoryStore *accessoryStore_;
87 	LandscapeDefinitions *landscapes_;
88 	TargetContainer *targetContainer_;
89 	TankModelStore *tankModelStore_;
90 	TankTeamScore *tankTeamScore_;
91 	TanketTypes *tanketTypes_;
92 	TargetMovement *targetMovement_;
93 	LUAScriptFactory *luaScriptFactory_;
94 	LUAScriptHook *luaScriptHook_;
95 	TankAIStrings *tankAIStrings_;
96 	ObjectGroups *objectGroups_;
97 };
98 
99 #endif
100