#pragma once

#include "td/protocol/Protocol.h"

namespace td {
namespace protocol {

enum class ItemType : std::uint8_t {
	// Upgrades
	ClickerUpgrade,
	GoldPerSecUpgrade,

	// Items
};

/** Packet used by the client to buy items or upgrades
	Packet used by the server to confirm transaction  */
class PlayerBuyItemPacket : public Packet {
private:
	ItemType m_ItemType;
	std::uint8_t m_Count;
public:
	PlayerBuyItemPacket() {}
	PlayerBuyItemPacket(ItemType itemType, std::uint8_t count) : m_ItemType(itemType), m_Count(count) {}
	virtual ~PlayerBuyItemPacket() {}

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

	ItemType GetItemType() const { return m_ItemType; }
	std::uint8_t GetCount() const { return m_Count; }

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

} // namespace protocol
} // namespace td
