#pragma once #include "game/BaseGame.h" #include "protocol/PacketHandler.h" #include "WorldClient.h" #include "render/WorldRenderer.h" #include "render/Renderer.h" namespace td { namespace client { class ClientGame : public protocol::PacketHandler, public game::Game{ private: std::uint8_t m_ConnexionID; std::uint32_t m_LobbyTime = 0; game::Player* m_Player = nullptr; render::Renderer* m_Renderer; client::WorldClient m_WorldClient; render::WorldRenderer m_WorldRenderer; public: ClientGame(protocol::PacketDispatcher* dispatcher, render::Renderer* renderer); virtual ~ClientGame(); virtual void tick(std::uint64_t delta); void renderWorld(); std::uint32_t getLobbyTime() const{return m_LobbyTime;} const game::Player* getPlayer() const{return m_Player;} virtual void HandlePacket(protocol::ConnexionInfoPacket* packet); virtual void HandlePacket(protocol::PlayerJoinPacket* packet); virtual void HandlePacket(protocol::PlayerLeavePacket* packet); virtual void HandlePacket(protocol::PlayerListPacket* packet); virtual void HandlePacket(protocol::UpdatePlayerTeamPacket* packet); virtual void HandlePacket(protocol::UpdateGameStatePacket* packet); virtual void HandlePacket(protocol::UpdateLobbyTimePacket* packet); virtual void HandlePacket(protocol::UpdateMoneyPacket* packet); virtual void HandlePacket(protocol::DisconnectPacket* packet); virtual void HandlePacket(protocol::WorldDataPacket* packet); }; } // namespace client } // namespace td