#pragma once

#include "td/protocol/Protocol.h"
#include "td/game/BaseGame.h"

namespace td {
namespace protocol {

struct PlayerInfo {
	std::string name;
	game::TeamColor team;
};

class PlayerListPacket : public Packet {
private:
	std::map<std::uint8_t, PlayerInfo> m_Players;
public:
	PlayerListPacket() {}
	PlayerListPacket(std::map<std::uint8_t, PlayerInfo> players) : m_Players(players) {}
	virtual ~PlayerListPacket() {}

	virtual DataBuffer Serialize(bool packetID = true) const;
	virtual void Deserialize(DataBuffer& data);
	virtual void Dispatch(PacketHandler* handler) const;

	const std::map<std::uint8_t, PlayerInfo>& GetPlayers() const { return m_Players; }

	virtual PacketType GetType() const { return PacketType::PlayerList; }
};

} // namespace protocol
} // namespace td
