add fire arrow and fix world events

This commit is contained in:
2021-12-03 18:30:45 +01:00
parent 657fe761ab
commit 7a6fdc30b6
7 changed files with 17 additions and 21 deletions

View File

@@ -164,6 +164,7 @@ public:
ArcherTower(TowerID id, std::uint16_t x, std::uint16_t y, PlayerID builder) : LittleTower(id, getType(), x, y, builder) {}
constexpr static float ExplosionRadius = 1.5f;
constexpr static float FireDurationSec = 10.0f;
virtual TowerType getType() const { return TowerType::Archer; }
virtual void tick(std::uint64_t delta, World* world);

View File

@@ -118,21 +118,21 @@ typedef std::vector<TowerPtr> TowerList;
class WorldListener {
public:
WorldListener(){}
WorldListener() {}
virtual void OnArcherTowerShot(MobPtr target, ArcherTower* shooter){}
virtual void OnArcherTowerShot(MobPtr target, ArcherTower* shooter) {}
virtual void OnArrowShot(MobPtr target, Tower* shooter){}
virtual void OnExplosion(utils::shape::Circle explosion, float centerDamage, Tower* shooter){}
virtual void OnArrowShot(MobPtr target, bool fire, Tower* shooter) {}
virtual void OnExplosion(utils::shape::Circle explosion, float centerDamage, Tower* shooter) {}
virtual void OnMobDamage(MobPtr target, float damage, Tower* damager){}
virtual void OnMobDamage(MobPtr target, float damage, Tower* damager) {}
virtual void OnMobDead(MobPtr mob){}
virtual void OnMobDead(MobPtr mob) {}
};
typedef utils::ObjectNotifier<WorldListener> WorldNotifier;
class World : public WorldNotifier, public WorldListener{
class World : public WorldNotifier, public WorldListener {
protected:
TowerTileColorPalette m_TowerPlacePalette;
Color m_WalkablePalette;
@@ -211,7 +211,7 @@ public:
virtual void OnArcherTowerShot(MobPtr target, ArcherTower* shooter);
virtual void OnArrowShot(MobPtr target, Tower* shooter);
virtual void OnArrowShot(MobPtr target, bool fire, Tower* shooter);
virtual void OnExplosion(utils::shape::Circle explosion, float centerDamage, Tower* shooter);
virtual void OnMobDamage(MobPtr target, float damage, Tower* source);

View File

@@ -19,7 +19,6 @@ public:
virtual void HandlePacket(const protocol::SpawnMobPacket* packet) override;
virtual void HandlePacket(const protocol::UpgradeTowerPacket* packet) override;
virtual void OnArrowShot(game::MobPtr target, game::Tower* shooter) override;
};
} // namespace client

View File

@@ -19,7 +19,6 @@ public:
void spawnMobs(game::MobType type, std::uint8_t level, game::PlayerID sender, std::uint8_t count);
game::TowerPtr placeTowerAt(game::TowerType type, std::int32_t x, std::int32_t y, game::PlayerID builder);
virtual void OnArrowShot(game::MobPtr target, game::Tower* shooter) override;
};
} // namespace server