feat: add tower remove packet
This commit is contained in:
@@ -35,6 +35,7 @@ public:
|
||||
virtual void HandlePacket(SpawnMobPacket* packet) {}
|
||||
virtual void HandlePacket(PlaceTowerPacket* packet) {}
|
||||
virtual void HandlePacket(WorldAddTowerPacket* packet) {}
|
||||
virtual void HandlePacket(WorldRemoveTowerPacket* packet) {}
|
||||
};
|
||||
|
||||
} // namespace protocol
|
||||
|
||||
@@ -29,7 +29,8 @@ enum class PacketType : std::uint8_t {
|
||||
ServerTps,
|
||||
SpawnMob,
|
||||
PlaceTower,
|
||||
WorldAddTower
|
||||
WorldAddTower,
|
||||
WorldRemoveTower,
|
||||
};
|
||||
|
||||
class Packet {
|
||||
@@ -428,5 +429,22 @@ public:
|
||||
virtual PacketType getType() const { return PacketType::WorldAddTower; }
|
||||
};
|
||||
|
||||
class WorldRemoveTowerPacket : public Packet{
|
||||
private:
|
||||
game::TowerID m_TowerID;
|
||||
public:
|
||||
WorldRemoveTowerPacket() {}
|
||||
WorldRemoveTowerPacket(game::TowerID id) : m_TowerID(id) {}
|
||||
virtual ~WorldRemoveTowerPacket() {}
|
||||
|
||||
virtual DataBuffer Serialize() const;
|
||||
virtual void Deserialize(DataBuffer& data);
|
||||
virtual void Dispatch(PacketHandler* handler);
|
||||
|
||||
game::TowerID getTowerID() const { return m_TowerID; }
|
||||
|
||||
virtual PacketType getType() const { return PacketType::WorldRemoveTower; }
|
||||
};
|
||||
|
||||
}
|
||||
}
|
||||
@@ -28,6 +28,7 @@ static std::map<PacketType, PacketCreator> packets = {
|
||||
{PacketType::SpawnMob, []() -> Packet* {return new SpawnMobPacket(); } },
|
||||
{PacketType::PlaceTower, []() -> Packet* {return new PlaceTowerPacket(); } },
|
||||
{PacketType::WorldAddTower, []() -> Packet* {return new WorldAddTowerPacket(); } },
|
||||
{PacketType::WorldRemoveTower, []() -> Packet* {return new WorldRemoveTowerPacket(); } },
|
||||
};
|
||||
|
||||
Packet* createPacket(PacketType type, DataBuffer& buffer) {
|
||||
|
||||
@@ -402,12 +402,22 @@ void PlaceTowerPacket::Deserialize(DataBuffer& data) {
|
||||
|
||||
DataBuffer WorldAddTowerPacket::Serialize() const {
|
||||
DataBuffer data;
|
||||
data << getID() << m_TowerX << m_TowerY << m_TowerType << m_Builder;
|
||||
data << getID() << m_TowerID << m_TowerX << m_TowerY << m_TowerType << m_Builder;
|
||||
return data;
|
||||
}
|
||||
|
||||
void WorldAddTowerPacket::Deserialize(DataBuffer& data) {
|
||||
data >> m_TowerX >> m_TowerY >> m_TowerType >> m_Builder;
|
||||
data >> m_TowerID >> m_TowerX >> m_TowerY >> m_TowerType >> m_Builder;
|
||||
}
|
||||
|
||||
DataBuffer WorldRemoveTowerPacket::Serialize() const {
|
||||
DataBuffer data;
|
||||
data << getID() << m_TowerID;
|
||||
return data;
|
||||
}
|
||||
|
||||
void WorldRemoveTowerPacket::Deserialize(DataBuffer& data) {
|
||||
data >> m_TowerID;
|
||||
}
|
||||
|
||||
REGISTER_DISPATCH_CLASS(PlayerLoginPacket);
|
||||
@@ -429,6 +439,7 @@ REGISTER_DISPATCH_CLASS(ServerTpsPacket);
|
||||
REGISTER_DISPATCH_CLASS(SpawnMobPacket);
|
||||
REGISTER_DISPATCH_CLASS(PlaceTowerPacket);
|
||||
REGISTER_DISPATCH_CLASS(WorldAddTowerPacket);
|
||||
REGISTER_DISPATCH_CLASS(WorldRemoveTowerPacket);
|
||||
|
||||
} // namespace protocol
|
||||
} // namespace td
|
||||
Reference in New Issue
Block a user