text: #pragma once
  
  #include <thread>
  
  #include <raccoon-ecs/async_systems_manager.h>
  
  #include "GameData/World.h"
  #include "GameData/GameData.h"
  #include "GameData/Serialization/Json/JsonComponentSerializer.h"
  
  #include "Utils/Application/ArgumentsParser.h"
  
  #include "HAL/GameBase.h"
  
  #include "GameLogic/SharedManagers/TimeData.h"
  #include "GameLogic/SharedManagers/WorldHolder.h"
  #include "GameLogic/SharedManagers/InputData.h"
  #include "GameLogic/Render/RenderThreadManager.h"
  
  #include "GameLogic/Game.h"
  
  #ifdef IMGUI_ENABLED
  #include "GameLogic/Imgui/ImguiDebugData.h"
  #endif
  
  #ifdef ENABLE_SCOPED_PROFILER
  #include <mutex>
  #endif
  
  class HapGame : public Game
  {
  public:
  	HapGame(int width, int height);
  
  	void start(ArgumentsParser& arguments);
  	void setKeyboardKeyState(int key, bool isPressed) override;
  	void setMouseKeyState(int key, bool isPressed) override;
  	void initResources() override;
  
  private:
  	void initSystems();
  
  #ifdef IMGUI_ENABLED
  	ImguiDebugData mImguiDebugData{getWorldHolder(), getTime(), getComponentFactory(), {}};
  #endif // IMGUI_ENABLED
  };
  