public static void RemoveEffect(PlayerStatusEffect effect) { if (effect == null || !statusEffects[effect.ID].Contains(effect)) { return; } effect.OnEnd(); statusEffects[effect.ID].Remove(effect); }
public static void AddEffect(PlayerStatusEffect effect) { if (!statusEffects.ContainsKey(effect.ID)) { statusEffects.Add(effect.ID, new List <PlayerStatusEffect>()); } List <PlayerStatusEffect> effects = statusEffects[effect.ID]; if (effects.Contains(effect)) { return; } effects.Add(effect); effect.OnStart(); }
public PlayerStatusEffect UpdateAndGetPlayerStatusEffect(int index, float?currentTime, bool isConditionPassed) { PlayerStatusEffect playerStatusEffect = StatusEffects.SingleOrDefault(statusEffect => statusEffect.Index == index); if (playerStatusEffect == null && isConditionPassed) { playerStatusEffect = new PlayerStatusEffect(index, currentTime, currentTime, isConditionPassed); StatusEffects.Add(playerStatusEffect); } else if (playerStatusEffect != null) { if (currentTime.HasValue) { playerStatusEffect.Time.Current = currentTime.Value; } playerStatusEffect.IsConditionPassed = isConditionPassed; } return(playerStatusEffect); }