26 lines
653 B
C++
26 lines
653 B
C++
#include "td/game/Towers.h"
|
|
#include "td/game/World.h"
|
|
|
|
namespace td {
|
|
namespace game {
|
|
|
|
void ArcherTower::Tick(std::uint64_t delta, World* world) {
|
|
if (m_Timer.Update(delta)) {
|
|
std::uint8_t arrowsShot = 0;
|
|
bool explosiveArrows = GetLevel().GetPath() == TowerPath::Bottom;
|
|
std::uint8_t arrows = explosiveArrows ? 2 : GetLevel().GetLevel();
|
|
for (MobPtr mob : world->GetMobList()) {
|
|
if (IsMobInRange(mob)) {
|
|
world->GetWorldNotifier().NotifyListeners(&WorldListener::OnArcherTowerShot, mob, this);
|
|
m_Timer.ApplyCooldown();
|
|
arrowsShot++;
|
|
if (arrowsShot >= arrows)
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
} // namespace game
|
|
} // namespace td
|