private void HandleCardEffectsWorker(CardPotentialState curState) { if (_currentActiveCardEffects.Count > 0) {// get effects by their 'intended' usage state // would eventually move entire thing to event system so i could hook it up to // anims/fx etc and so it can be 'slowed' down var tempEffects = _currentActiveCardEffects.Where(x => x.Key.EffectPreferredState == curState).ToList(); for (int i = 0; i < tempEffects.Count; i++) { var e = tempEffects[i].Key; e.OnActivateCardEffect(); // would move code below to the effect itself, and it would simply invoke a method here instead if (e.CardEffectDefaults.BaseCardEffect == CardEffectType.Debug) { ChangeTargetHealth(GetTarget(e.EffectTarget), e.CardEffectDefaults.EffectOnHealth); } _currentActiveCardEffects[e]--; if (_currentActiveCardEffects[e] <= 0) { _currentActiveCardEffects.Remove(e); } } /*var tempList = new List<Card>(); * for (int i = 0; i < _currentActiveCardEffects.Count; i++) * { * var effect = _currentActiveCardEffects.ElementAt(i); * var newEffectChange = effect.Key; * newEffectChange.OnActivateCardEffect(); * _currentActiveCardEffects[effect.Key]--; * * if (effect.Value <= 0) * { * _currentActiveCardEffects.Remove(effect.Key); * } * }*/ // } }
private void HandleAnyCardEffectsInPlay(CardPotentialState curState) { HandleCardEffectsWorker(curState); }