Cafu Engine
GameImpl.hpp
1 /*
2 =================================================================================
3 This file is part of Cafu, the open-source game engine and graphics engine
4 for multiplayer, cross-platform, real-time 3D action.
5 Copyright (C) 2002-2013 Carsten Fuchs Software.
6 
7 Cafu is free software: you can redistribute it and/or modify it under the terms
8 of the GNU General Public License as published by the Free Software Foundation,
9 either version 3 of the License, or (at your option) any later version.
10 
11 Cafu is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
12 without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
13 PURPOSE. See the GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with Cafu. If not, see <http://www.gnu.org/licenses/>.
17 
18 For support and more information about Cafu, visit us at <http://www.cafu.de>.
19 =================================================================================
20 */
21 
22 #ifndef CAFU_GAME_IMPLEMENTATION_HPP_INCLUDED
23 #define CAFU_GAME_IMPLEMENTATION_HPP_INCLUDED
24 
25 #include "../../Game.hpp"
26 #include "Templates/Array.hpp"
27 
28 #ifndef GAME_NAME
29 #error Macro GAME_NAME must be defined!
30 #endif
31 
32 
33 class CafuModelT;
34 class PhysicsWorldT;
35 class SoundI;
36 
37 
38 namespace GAME_NAME
39 {
40  /// This class provides the "DeathMatch" implementation of the GameI interface.
42  {
43  public:
44 
45  // Implement the methods of the GameI interface.
46  void Initialize(bool AsClient, bool AsServer, ModelManagerT& ModelMan);
47  void Release();
48  const cf::TypeSys::TypeInfoManT& GetEntityTIM() const;
49 
50  IntrusivePtrT<GameEntityI> CreateGameEntity(const cf::TypeSys::TypeInfoT* TI, IntrusivePtrT<cf::GameSys::EntityT> Entity, const std::map<std::string, std::string>& Properties, const cf::SceneGraph::GenericNodeT* RootNode, unsigned long ID, cf::GameSys::GameWorldI* GameWorld);
51 
52 
53  /// Returns the singleton instance of this class.
54  static GameImplT& GetInstance();
55 
56 
57  private:
58 
59  /// The constructor is private because this is a singleton class.
60  GameImplT();
61 
62  bool RunningAsClient;
63  bool RunningAsServer;
64 
65  ArrayT<SoundI*> m_PreCacheSounds; ///< Array of all precached sounds.
66  };
67 }
68 
69 #endif
This class represents a native Cafu model.
Definition: Model_cmdl.hpp:60
Definition: PhysicsWorld.hpp:173
This class represents a sound.
Definition: Sound.hpp:30
The game world interface, specified as an ABC so that is can be used without linked (module-local) im...
Definition: GameWorld.hpp:49
This class manages the type infos.
Definition: TypeSys.hpp:159
The game interface, specified as an ABC so that is can be used without linked (module-local) implemen...
Definition: Game.hpp:49
This class is used for managing model instances.
Definition: ModelManager.hpp:46
This class provides the "DeathMatch" implementation of the GameI interface.
Definition: GameImpl.hpp:41
This class keeps type information (about an entity class that occurs in the game).
Definition: TypeSys.hpp:94
Definition: Node.hpp:50