#pragma once #include namespace td { namespace game { enum class GameState : std::uint8_t { Lobby, Game, EndGame, Disconnected, Closed }; typedef std::map PlayerList; class Game { protected: World* m_World; GameState m_GameState = GameState::Lobby; PlayerList m_Players; public: Game(World* world); virtual ~Game(); virtual void Tick(std::uint64_t delta); GameState GetGameState() const { return m_GameState; } void SetGameState(GameState gameState) { m_GameState = gameState; }; const World* GetWorld() const { return m_World; } World* GetWorld() { return m_World; } const PlayerList& GetPlayers() const { return m_Players; } PlayerList& GetPlayers() { return m_Players; } const Player* GetPlayerById(PlayerID id) const; Player* GetPlayerById(PlayerID id); }; } // namespace game } // namespace td