#pragma once

#include "td/game/World.h"
#include "td/protocol/PacketHandler.h"

namespace td {
namespace client {

class ClientGame;

class WorldClient : public game::World, public protocol::PacketHandler {
private:
	ClientGame* m_Game;
public:
	WorldClient(ClientGame* game);
	virtual ~WorldClient();

	virtual void HandlePacket(const protocol::WorldBeginDataPacket* packet) override;
	virtual void HandlePacket(const protocol::WorldDataPacket* packet) override;
	virtual void HandlePacket(const protocol::SpawnMobPacket* packet) override;
	virtual void HandlePacket(const protocol::UpgradeTowerPacket* packet) override;
	virtual void HandlePacket(const protocol::WorldAddTowerPacket* packet) override;
	virtual void HandlePacket(const protocol::RemoveMobPacket* packet) override;
	virtual void HandlePacket(const protocol::RemoveTowerPacket* packet) override;
	virtual void HandlePacket(const protocol::UpdateMobStatesPacket* packet) override;
	virtual void HandlePacket(const protocol::UpdateCastleLifePacket* packet) override;

};

} // namespace client   
} // namespace td
