add fire arrow and fix world events
This commit is contained in:
@@ -399,15 +399,20 @@ TowerPtr World::getTowerById(TowerID towerID) {
|
||||
}
|
||||
|
||||
void World::OnArcherTowerShot(MobPtr target, ArcherTower* shooter) {
|
||||
bool explosiveArrows = shooter->getLevel().getPath() == TowerPath::Bottom;
|
||||
notifyListeners(&WorldListener::OnArrowShot, target, shooter);
|
||||
bool fireArrows = shooter->getLevel().getPath() == TowerPath::Bottom;
|
||||
bool explosiveArrows = shooter->getLevel().getLevel() == 4 && fireArrows;
|
||||
|
||||
notifyListeners(&WorldListener::OnArrowShot, target, fireArrows, shooter);
|
||||
if (explosiveArrows) {
|
||||
notifyListeners(&WorldListener::OnExplosion, utils::shape::Circle{ target->getCenterX(), target->getCenterY(), ArcherTower::ExplosionRadius }, shooter->getStats()->getDamage(), shooter);
|
||||
}
|
||||
}
|
||||
|
||||
void World::OnArrowShot(MobPtr target, Tower* shooter) {
|
||||
void World::OnArrowShot(MobPtr target, bool fireArrow, Tower* shooter) {
|
||||
notifyListeners(&WorldListener::OnMobDamage, target, shooter->getStats()->getDamage(), shooter);
|
||||
if (fireArrow) {
|
||||
target->addEffect(EffectType::Fire, ArcherTower::FireDurationSec, shooter);
|
||||
}
|
||||
}
|
||||
|
||||
void World::OnExplosion(utils::shape::Circle explosion, float centerDamage, Tower* shooter) {
|
||||
|
||||
@@ -32,9 +32,5 @@ void WorldClient::HandlePacket(const protocol::UpgradeTowerPacket* packet) {
|
||||
tower->upgrade(packet->getTowerLevel().getLevel(), packet->getTowerLevel().getPath());
|
||||
}
|
||||
|
||||
void WorldClient::OnArrowShot(game::MobPtr target, game::Tower* tower) {
|
||||
World::OnArrowShot(target, tower);
|
||||
}
|
||||
|
||||
} // namespace client
|
||||
} // namespace td
|
||||
|
||||
@@ -49,9 +49,5 @@ game::TowerPtr ServerWorld::placeTowerAt(game::TowerType type, std::int32_t x, s
|
||||
return tower;
|
||||
}
|
||||
|
||||
void ServerWorld::OnArrowShot(game::MobPtr target, game::Tower* shooter) {
|
||||
World::OnArrowShot(target, shooter);
|
||||
}
|
||||
|
||||
} // namespace server
|
||||
} // namespace td
|
||||
|
||||
Reference in New Issue
Block a user