Esempio n. 1
0
        public void RemoveAura(Aura aura, object referenceObject)
        {
            var activeAura = _activeAuras
                             .FirstOrDefault(x => x.AuraType == aura && x.ReferenceObject == referenceObject);

            if (activeAura == null)
            {
                return;
            }

            activeAura.Remove();
            _activeAuras.Remove(activeAura);
            OnAuraRemoved?.Invoke(activeAura);
        }
Esempio n. 2
0
        public void Tick(float deltaTime)
        {
            foreach (var activeAura in _activeAuras)
            {
                activeAura.Tick(deltaTime);
            }

            var completeAuras = _activeAuras
                                .Where(x => x.HasExpired)
                                .ToList();

            completeAuras.AddRange(_activeAuras.Where(x => x.Stacks < 1));

            foreach (var completeAura in completeAuras)
            {
                completeAura.Remove();
                _activeAuras.Remove(completeAura);
                OnAuraRemoved?.Invoke(completeAura);
            }
        }