feat: implement basic tower placement

This commit is contained in:
2021-09-19 13:43:45 +02:00
parent bcde4278ab
commit 52a143769e
17 changed files with 318 additions and 52 deletions

View File

@@ -33,6 +33,8 @@ public:
virtual void HandlePacket(DisconnectPacket* packet){}
virtual void HandlePacket(ServerTpsPacket* packet){}
virtual void HandlePacket(SpawnMobPacket* packet){}
virtual void HandlePacket(PlaceTowerPacket* packet){}
virtual void HandlePacket(WorldAddTowerPacket* packet){}
};
} // namespace protocol

View File

@@ -28,6 +28,8 @@ enum class PacketType : std::uint8_t{
UpdatePlayerTeam,
ServerTps,
SpawnMob,
PlaceTower,
WorldAddTower
};
class Packet{
@@ -380,5 +382,49 @@ public:
virtual PacketType getType() const{ return PacketType::SpawnMob; }
};
class PlaceTowerPacket : public Packet{
private:
std::int32_t m_TowerX, m_TowerY;
game::TowerType m_TowerType;
public:
PlaceTowerPacket(){}
PlaceTowerPacket(std::int32_t x, std::int32_t y, game::TowerType type) :
m_TowerX(x), m_TowerY(y), m_TowerType(type){}
virtual ~PlaceTowerPacket(){}
virtual DataBuffer Serialize() const;
virtual void Deserialize(DataBuffer& data);
virtual void Dispatch(PacketHandler* handler);
std::int32_t getTowerX() const { return m_TowerX; }
std::int32_t getTowerY() const { return m_TowerY; }
game::TowerType getTowerType() const { return m_TowerType; }
virtual PacketType getType() const{ return PacketType::PlaceTower; }
};
class WorldAddTowerPacket : public Packet{
private:
std::int32_t m_TowerX, m_TowerY;
game::TowerType m_TowerType;
game::PlayerID m_Builder;
public:
WorldAddTowerPacket(){}
WorldAddTowerPacket(std::int32_t x, std::int32_t y, game::TowerType type, game::PlayerID player) :
m_TowerX(x), m_TowerY(y), m_TowerType(type), m_Builder(player){}
virtual ~WorldAddTowerPacket(){}
virtual DataBuffer Serialize() const;
virtual void Deserialize(DataBuffer& data);
virtual void Dispatch(PacketHandler* handler);
std::int32_t getTowerX() const { return m_TowerX; }
std::int32_t getTowerY() const { return m_TowerY; }
game::TowerType getTowerType() const { return m_TowerType; }
game::PlayerID getBuilder() const {return m_Builder;}
virtual PacketType getType() const{ return PacketType::WorldAddTower; }
};
}
}