feat: add tower remove packet

This commit is contained in:
2021-09-26 18:38:41 +02:00
parent fe7cfdec72
commit 6cbd967ea3
4 changed files with 34 additions and 3 deletions

View File

@@ -35,6 +35,7 @@ public:
virtual void HandlePacket(SpawnMobPacket* packet) {} virtual void HandlePacket(SpawnMobPacket* packet) {}
virtual void HandlePacket(PlaceTowerPacket* packet) {} virtual void HandlePacket(PlaceTowerPacket* packet) {}
virtual void HandlePacket(WorldAddTowerPacket* packet) {} virtual void HandlePacket(WorldAddTowerPacket* packet) {}
virtual void HandlePacket(WorldRemoveTowerPacket* packet) {}
}; };
} // namespace protocol } // namespace protocol

View File

@@ -29,7 +29,8 @@ enum class PacketType : std::uint8_t {
ServerTps, ServerTps,
SpawnMob, SpawnMob,
PlaceTower, PlaceTower,
WorldAddTower WorldAddTower,
WorldRemoveTower,
}; };
class Packet { class Packet {
@@ -428,5 +429,22 @@ public:
virtual PacketType getType() const { return PacketType::WorldAddTower; } 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; }
};
} }
} }

View File

@@ -28,6 +28,7 @@ static std::map<PacketType, PacketCreator> packets = {
{PacketType::SpawnMob, []() -> Packet* {return new SpawnMobPacket(); } }, {PacketType::SpawnMob, []() -> Packet* {return new SpawnMobPacket(); } },
{PacketType::PlaceTower, []() -> Packet* {return new PlaceTowerPacket(); } }, {PacketType::PlaceTower, []() -> Packet* {return new PlaceTowerPacket(); } },
{PacketType::WorldAddTower, []() -> Packet* {return new WorldAddTowerPacket(); } }, {PacketType::WorldAddTower, []() -> Packet* {return new WorldAddTowerPacket(); } },
{PacketType::WorldRemoveTower, []() -> Packet* {return new WorldRemoveTowerPacket(); } },
}; };
Packet* createPacket(PacketType type, DataBuffer& buffer) { Packet* createPacket(PacketType type, DataBuffer& buffer) {

View File

@@ -402,12 +402,22 @@ void PlaceTowerPacket::Deserialize(DataBuffer& data) {
DataBuffer WorldAddTowerPacket::Serialize() const { DataBuffer WorldAddTowerPacket::Serialize() const {
DataBuffer data; 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; return data;
} }
void WorldAddTowerPacket::Deserialize(DataBuffer& 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); REGISTER_DISPATCH_CLASS(PlayerLoginPacket);
@@ -429,6 +439,7 @@ REGISTER_DISPATCH_CLASS(ServerTpsPacket);
REGISTER_DISPATCH_CLASS(SpawnMobPacket); REGISTER_DISPATCH_CLASS(SpawnMobPacket);
REGISTER_DISPATCH_CLASS(PlaceTowerPacket); REGISTER_DISPATCH_CLASS(PlaceTowerPacket);
REGISTER_DISPATCH_CLASS(WorldAddTowerPacket); REGISTER_DISPATCH_CLASS(WorldAddTowerPacket);
REGISTER_DISPATCH_CLASS(WorldRemoveTowerPacket);
} // namespace protocol } // namespace protocol
} // namespace td } // namespace td