refactor: mob die event
This commit is contained in:
@@ -20,7 +20,7 @@ EffectDuration& Mob::getEffect(EffectType effectType) {
|
||||
return *std::find_if(m_Effects.begin(), m_Effects.end(), [&effectType](EffectDuration effect) { return effect.type == effectType;});
|
||||
}
|
||||
|
||||
void Mob::addEffect(EffectType effectType, float durationSec, const Tower* tower) {
|
||||
void Mob::addEffect(EffectType effectType, float durationSec, Tower* tower) {
|
||||
if (isImmuneTo(effectType))
|
||||
return;
|
||||
if (hasEffect(effectType)) {
|
||||
@@ -194,12 +194,12 @@ bool Mob::isTouchingCastle(const TeamCastle& enemyCastle) const {
|
||||
}
|
||||
|
||||
void Mob::tick(std::uint64_t delta, World* world) {
|
||||
updateEffects(delta);
|
||||
updateEffects(delta, world);
|
||||
move(delta, world);
|
||||
attackCastle(delta, world);
|
||||
}
|
||||
|
||||
void Mob::updateEffects(std::uint64_t delta) {
|
||||
void Mob::updateEffects(std::uint64_t delta, World* world) {
|
||||
float deltaSec = (float)delta / 1000.0f;
|
||||
for (std::size_t i = 0; i < m_Effects.size(); i++) {
|
||||
EffectDuration& effect = m_Effects[i];
|
||||
@@ -228,12 +228,12 @@ void Mob::updateEffects(std::uint64_t delta) {
|
||||
}
|
||||
if (hasEffect(EffectType::Fire)) {
|
||||
if (m_EffectFireTimer.update(delta)) {
|
||||
damage(3, getEffect(EffectType::Fire).tower);
|
||||
world->getMobNotifier().notifyListeners(&MobListener::OnMobDamage, this, 3.0f, getEffect(EffectType::Fire).tower);
|
||||
}
|
||||
}
|
||||
if (hasEffect(EffectType::Poison)) {
|
||||
if (m_EffectPoisonTimer.update(delta)) {
|
||||
damage(1, getEffect(EffectType::Poison).tower);
|
||||
world->getMobNotifier().notifyListeners(&MobListener::OnMobDamage, this, 1.0f, getEffect(EffectType::Poison).tower);
|
||||
}
|
||||
}
|
||||
if (hasEffect(EffectType::Heal)) {
|
||||
|
||||
Reference in New Issue
Block a user