void CStatusEffectContainer::CheckEffects(uint32 tick) { DSP_DEBUG_BREAK_IF(m_POwner == nullptr); if (!m_POwner->isDead()) { if ((tick - m_EffectCheckTime) < 1000 ) { return; } m_EffectCheckTime = tick; for (uint16 i = 0; i < m_StatusEffectList.size(); ++i) { CStatusEffect* PStatusEffect = m_StatusEffectList.at(i); if (PStatusEffect->GetTickTime() != 0 && PStatusEffect->GetLastTick() + PStatusEffect->GetTickTime() <= tick) { PStatusEffect->SetLastTick(tick); luautils::OnEffectTick(m_POwner,PStatusEffect); } if (PStatusEffect->GetDuration() != 0 && PStatusEffect->GetDuration() + PStatusEffect->GetStartTime() <= tick && i <m_StatusEffectList.size()) { RemoveStatusEffect(i--); } } } }
void CStatusEffectContainer::CheckEffects(time_point tick) { DSP_DEBUG_BREAK_IF(m_POwner == nullptr); if (!m_POwner->isDead()) { if ((tick - m_EffectCheckTime) < 1s && (tick - m_EffectCheckTime > 0s)) { return; } m_POwner->PAI->EventHandler.triggerListener("EFFECT_TICK", m_POwner); m_EffectCheckTime = tick; for (uint16 i = 0; i < m_StatusEffectList.size(); ++i) { CStatusEffect* PStatusEffect = m_StatusEffectList.at(i); if (PStatusEffect->GetTickTime() != 0 && PStatusEffect->GetLastTick() + std::chrono::milliseconds(PStatusEffect->GetTickTime()) <= tick) { PStatusEffect->SetLastTick(tick); luautils::OnEffectTick(m_POwner, PStatusEffect); } if (PStatusEffect->GetDuration() != 0 && std::chrono::milliseconds(PStatusEffect->GetDuration()) + PStatusEffect->GetStartTime() <= tick && i < m_StatusEffectList.size()) { RemoveStatusEffect(i--); } } } }