add buy packets
This commit is contained in:
@@ -20,6 +20,8 @@ public:
|
|||||||
virtual void HandlePacket(const DisconnectPacket* packet) {}
|
virtual void HandlePacket(const DisconnectPacket* packet) {}
|
||||||
virtual void HandlePacket(const KeepAlivePacket* packet) {}
|
virtual void HandlePacket(const KeepAlivePacket* packet) {}
|
||||||
virtual void HandlePacket(const PlaceTowerPacket* packet) {}
|
virtual void HandlePacket(const PlaceTowerPacket* packet) {}
|
||||||
|
virtual void HandlePacket(const PlayerBuyItemPacket* packet) {}
|
||||||
|
virtual void HandlePacket(const PlayerBuyMobUpgradePacket* packet) {}
|
||||||
virtual void HandlePacket(const PlayerJoinPacket* packet) {}
|
virtual void HandlePacket(const PlayerJoinPacket* packet) {}
|
||||||
virtual void HandlePacket(const PlayerLeavePacket* packet) {}
|
virtual void HandlePacket(const PlayerLeavePacket* packet) {}
|
||||||
virtual void HandlePacket(const PlayerListPacket* packet) {}
|
virtual void HandlePacket(const PlayerListPacket* packet) {}
|
||||||
|
|||||||
@@ -41,6 +41,10 @@ enum class PacketType : std::uint8_t {
|
|||||||
Disconnect,
|
Disconnect,
|
||||||
UpgradeTower,
|
UpgradeTower,
|
||||||
RemoveTower,
|
RemoveTower,
|
||||||
|
PlayerBuyItem,
|
||||||
|
PlayerBuyMobUpgrade,
|
||||||
|
|
||||||
|
PACKET_COUNT
|
||||||
};
|
};
|
||||||
|
|
||||||
struct WorldHeader {
|
struct WorldHeader {
|
||||||
@@ -573,5 +577,55 @@ public:
|
|||||||
virtual PacketType GetType() const { return PacketType::UpdateCastleLife; }
|
virtual PacketType GetType() const { return PacketType::UpdateCastleLife; }
|
||||||
};
|
};
|
||||||
|
|
||||||
|
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; }
|
||||||
|
};
|
||||||
|
|
||||||
|
/** Packet used by the client to buy mob upgrades
|
||||||
|
Packet used by the server to confirm transaction */
|
||||||
|
class PlayerBuyMobUpgradePacket : public Packet {
|
||||||
|
private:
|
||||||
|
game::MobType m_MobType;
|
||||||
|
std::uint8_t m_MobLevel;
|
||||||
|
public:
|
||||||
|
PlayerBuyMobUpgradePacket() {}
|
||||||
|
PlayerBuyMobUpgradePacket(game::MobType mobType, std::uint8_t level) : m_MobType(mobType), m_MobLevel(level) {}
|
||||||
|
virtual ~PlayerBuyMobUpgradePacket() {}
|
||||||
|
|
||||||
|
virtual DataBuffer Serialize(bool packetID = true) const;
|
||||||
|
virtual void Deserialize(DataBuffer& data);
|
||||||
|
virtual void Dispatch(PacketHandler* handler) const;
|
||||||
|
|
||||||
|
game::MobType GetMobType() const { return m_MobType; }
|
||||||
|
std::uint8_t GetLevel() const { return m_MobLevel; }
|
||||||
|
|
||||||
|
virtual PacketType GetType() const { return PacketType::PlayerBuyMobUpgrade; }
|
||||||
|
};
|
||||||
|
|
||||||
} // namespace protocol
|
} // namespace protocol
|
||||||
} // namespace td
|
} // namespace td
|
||||||
@@ -33,6 +33,8 @@ static std::map<PacketType, PacketCreator> packets = {
|
|||||||
{PacketType::UpgradeTower, []() -> PacketPtr {return std::make_unique<UpgradeTowerPacket>(); } },
|
{PacketType::UpgradeTower, []() -> PacketPtr {return std::make_unique<UpgradeTowerPacket>(); } },
|
||||||
{PacketType::UpdateCastleLife, []() -> PacketPtr {return std::make_unique<UpdateCastleLifePacket>(); } },
|
{PacketType::UpdateCastleLife, []() -> PacketPtr {return std::make_unique<UpdateCastleLifePacket>(); } },
|
||||||
{PacketType::UpdateMobStates, []() -> PacketPtr {return std::make_unique<UpdateMobStatesPacket>(); } },
|
{PacketType::UpdateMobStates, []() -> PacketPtr {return std::make_unique<UpdateMobStatesPacket>(); } },
|
||||||
|
{PacketType::PlayerBuyItem, []() -> PacketPtr {return std::make_unique<PlayerBuyItemPacket>(); } },
|
||||||
|
{PacketType::PlayerBuyMobUpgrade, []() -> PacketPtr {return std::make_unique<PlayerBuyMobUpgradePacket>(); } },
|
||||||
};
|
};
|
||||||
|
|
||||||
PacketPtr CreatePacket(PacketType type, DataBuffer& buffer) {
|
PacketPtr CreatePacket(PacketType type, DataBuffer& buffer) {
|
||||||
|
|||||||
@@ -548,6 +548,30 @@ void UpdateMobStatesPacket::Deserialize(DataBuffer& data) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
DataBuffer PlayerBuyItemPacket::Serialize(bool packetID) const {
|
||||||
|
DataBuffer data;
|
||||||
|
|
||||||
|
WritePacketID(data, packetID);
|
||||||
|
data << m_ItemType << m_Count;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerBuyItemPacket::Deserialize(DataBuffer& data) {
|
||||||
|
data >> m_ItemType >> m_Count;
|
||||||
|
}
|
||||||
|
|
||||||
|
DataBuffer PlayerBuyMobUpgradePacket::Serialize(bool packetID) const {
|
||||||
|
DataBuffer data;
|
||||||
|
|
||||||
|
WritePacketID(data, packetID);
|
||||||
|
data << m_MobType << m_MobLevel;
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PlayerBuyMobUpgradePacket::Deserialize(DataBuffer& data) {
|
||||||
|
data >> m_MobType >> m_MobLevel;
|
||||||
|
}
|
||||||
|
|
||||||
REGISTER_DISPATCH_CLASS(PlayerLoginPacket)
|
REGISTER_DISPATCH_CLASS(PlayerLoginPacket)
|
||||||
REGISTER_DISPATCH_CLASS(WorldBeginDataPacket)
|
REGISTER_DISPATCH_CLASS(WorldBeginDataPacket)
|
||||||
REGISTER_DISPATCH_CLASS(WorldDataPacket)
|
REGISTER_DISPATCH_CLASS(WorldDataPacket)
|
||||||
@@ -572,6 +596,8 @@ REGISTER_DISPATCH_CLASS(SendMobsPacket)
|
|||||||
REGISTER_DISPATCH_CLASS(UpgradeTowerPacket)
|
REGISTER_DISPATCH_CLASS(UpgradeTowerPacket)
|
||||||
REGISTER_DISPATCH_CLASS(UpdateCastleLifePacket)
|
REGISTER_DISPATCH_CLASS(UpdateCastleLifePacket)
|
||||||
REGISTER_DISPATCH_CLASS(UpdateMobStatesPacket)
|
REGISTER_DISPATCH_CLASS(UpdateMobStatesPacket)
|
||||||
|
REGISTER_DISPATCH_CLASS(PlayerBuyItemPacket)
|
||||||
|
REGISTER_DISPATCH_CLASS(PlayerBuyMobUpgradePacket)
|
||||||
|
|
||||||
} // namespace protocol
|
} // namespace protocol
|
||||||
} // namespace td
|
} // namespace td
|
||||||
Reference in New Issue
Block a user