R-Type
R-Type project
GameManager.hpp
1 #pragma once
2 
3 #include "KapEngine.hpp"
4 #include "MenuManager.hpp"
5 
6 #include "Player/PlayerController.hpp"
7 #include "Animations/SpriteAnimation.hpp"
8 #include "Network/RtypeNetworkManager.hpp"
9 
10 namespace RType {
11  class GameManager {
12  static GameManager *instance;
13 
14  private:
15  KapEngine::KEngine *engine;
16 
17  MenuManager menuManager;
18 
19  std::shared_ptr<RtypeNetworkManager> networkManager;
20 
21  bool displaySplashScreens = true;
22  bool debugMode = false;
23 
24  public:
25  explicit GameManager(KapEngine::KEngine *_engine, bool splashScreens = true);
26  ~GameManager() = default;
27 
28  void launchGame();
29 
30  void launchServer();
31 
32  private:
33  void registerPrefabs();
34 
35  void registerMenus();
36 
37  void initSplashScreens();
38 
39  void initSinglePlayer();
40 
41  void initMultiPlayer(bool isServer);
42 
43  void initEndScene();
44 
45  void initAxis();
46 
47  public:
48  void startLocalMultiPlayer(const std::string &ip, const std::string &port);
49 
50  void startCampaign(const std::string &pathMap);
51 
52  bool hasDebugMode() const;
53 
54  void toggleDebugMode();
55 
56  MenuManager &getMenuManager();
57 
58  std::shared_ptr<RtypeNetworkManager> &getNetworkManager();
59 
60  static GameManager *getInstance() { return instance; }
61  };
62 } // namespace RType
RType::MenuManager
Definition: MenuManager.hpp:7
RType::GameManager
Definition: GameManager.hpp:11
KapEngine::KEngine
Class of engine.
Definition: Engine.hpp:60