58 lines
1.7 KiB
C++
58 lines
1.7 KiB
C++
#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 Client;
|
|
|
|
class ClientGame : public protocol::PacketHandler, public game::Game{
|
|
private:
|
|
Client* m_Client;
|
|
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(Client* client);
|
|
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;}
|
|
|
|
render::Renderer* getRenderer() const {return m_Renderer;}
|
|
|
|
void PlaceTower(game::TowerType type, const glm::vec2& position);
|
|
|
|
bool CanPlaceLittleTower(const glm::vec2& worldPos);
|
|
bool CanPlaceBigTower(const glm::vec2& worldPos);
|
|
|
|
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
|