feat: add upgrade tower (non gui)

This commit is contained in:
2021-11-05 18:54:21 +01:00
parent 42f599c800
commit 56ec9e7fe2
13 changed files with 73 additions and 7 deletions

View File

@@ -185,6 +185,7 @@ public:
const Team& getTeam(TeamColor team) const;
const TowerList& getTowers() const { return m_Towers; };
TowerPtr getTowerById(TowerID tower);
// Archer Tower
virtual void OnArrowShot(MobPtr target, Tower* shooter);

View File

@@ -42,6 +42,7 @@ public:
void selectTeam(game::TeamColor team);
void sendMobs(const std::vector<protocol::MobSend>& mobSends);
void upgradeTower(game::TowerID tower, game::TowerLevel level);
};
} // namespace client

View File

@@ -17,6 +17,7 @@ public:
virtual void HandlePacket(protocol::WorldBeginDataPacket* packet) override;
virtual void HandlePacket(protocol::WorldDataPacket* packet) override;
virtual void HandlePacket(protocol::SpawnMobPacket* packet) override;
virtual void HandlePacket(protocol::UpgradeTowerPacket* packet) override;
virtual void OnArrowShot(game::MobPtr target, game::Tower* shooter) override;
};

View File

@@ -39,6 +39,7 @@ public:
virtual void HandlePacket(protocol::DisconnectPacket* packet);
virtual void HandlePacket(protocol::PlaceTowerPacket* packet);
virtual void HandlePacket(protocol::SendMobsPacket* packet);
virtual void HandlePacket(protocol::UpgradeTowerPacket* packet);
std::uint8_t getID() const { return m_ID; }
const game::Player* getPlayer() const { return m_Player; }

View File

@@ -37,6 +37,7 @@ public:
virtual void HandlePacket(WorldAddTowerPacket* packet) {}
virtual void HandlePacket(WorldRemoveTowerPacket* packet) {}
virtual void HandlePacket(SendMobsPacket* packet) {}
virtual void HandlePacket(UpgradeTowerPacket* packet) {}
};
} // namespace protocol

View File

@@ -36,6 +36,7 @@ enum class PacketType : std::uint8_t {
// client <--> server
KeepAlive,
Disconnect,
UpgradeTower,
};
struct WorldHeader {
@@ -490,6 +491,24 @@ public:
virtual PacketType getType() const { return PacketType::WorldRemoveTower; }
};
class UpgradeTowerPacket : public Packet {
private:
game::TowerID m_TowerID;
game::TowerLevel m_TowerLevel;
public:
UpgradeTowerPacket() {}
UpgradeTowerPacket(game::TowerID tower, game::TowerLevel level) : m_TowerID(tower), m_TowerLevel(level) {}
virtual ~UpgradeTowerPacket() {}
virtual DataBuffer Serialize() const;
virtual void Deserialize(DataBuffer& data);
virtual void Dispatch(PacketHandler* handler);
game::TowerID getTowerID() const { return m_TowerID; }
game::TowerLevel getTowerLevel() const { return m_TowerLevel; }
virtual PacketType getType() const { return PacketType::UpgradeTower; }
};
}
}