/// <summary> /// Add a new status effect to this component. /// </summary> /// <param name="statusEffects">The status effect to add.</param> public void AddStatusEffect(ScriptableStatusEffectData statusEffectData) { StatusEffectBase statusEffect = statusEffectData.InitializeStatusEffect(this); bool hasMerged = false; if (mergeEffectsOfSameType) { // Todo: not efficient if there are many status effects active System.Type statusEffectType = statusEffect.GetType(); foreach (StatusEffectBase activeStatusEffect in activeStatusEffects) { if (activeStatusEffect.GetType() == statusEffectType) { activeStatusEffect.Merge(statusEffect); hasMerged = true; break; } } } if (hasMerged == false) { activeStatusEffects.Add(statusEffect); OnstatusEffectAdded?.Invoke(statusEffect); statusEffect.Activate(); } UpdateProcessingState(); }
private void RemoveStatusEffect(StatusEffectBase statusEffect) { statusEffect.End(); activeStatusEffects.Remove(statusEffect); UpdateProcessingState(); }
private void AddNewStatusEffectDisplay(StatusEffectBase statusEffect) { StatusEffectDisplay statusEffectDisplay = Instantiate(statusEffectDisplayPrefab, transform).GetComponent <StatusEffectDisplay>(); statusEffectDisplay.InitializeDisplay(statusEffect); activeStatusEffectsDisplays.Add(statusEffectDisplay); }
/// <summary> /// Supprime le statut du joueur /// </summary> public void DeleteStatusEffect() { if (statusEffect != null) { Destroy(statusEffect.gameObject); statusEffect = null; } canAct = true; }
public void InitializeDisplay(StatusEffectBase statusEffect) { this.statusEffect = statusEffect; timeRemaining.text = statusEffect.TimeRemaining.ToString(); image.sprite = statusEffect.StatusEffectData.Icon; statusEffect.OnStatusEffectTick += UpdateDisplay; }
public void AddStatusEffect(StatusEffectBase statusEffect) { var oldStatusEffect = StatusEffects.FirstOrDefault(s => statusEffect.GetType() == s.GetType() && s.BaseObject.Id == statusEffect.BaseObject.Id && s.Done == false); if (oldStatusEffect != null) { oldStatusEffect.Stacking(); } else { StatusEffects.Add(statusEffect); } }
private void StatusEffectRemoved(StatusEffectBase statEff) { timers.Remove(statEff); }
private void StatusEffectAdded(StatusEffectBase statEff) { var timer = TimerTickerSingleton.Instance.GetTimer(statEff); timers.Add(statEff, timer); }
/// <summary> /// Affecte un statut au joueur /// </summary> /// <param name="status"></param> public void AffectStatusEffectToPlayer(GameObject status) { statusEffect = Instantiate(status, transform.position, Quaternion.identity).GetComponent <StatusEffectBase>(); statusEffect.ActionStatusEffect(this); }
public void Merge(StatusEffectBase statusEffectToMerge) { timeRemaining += statusEffectToMerge.TimeRemaining; }
public void AddStatusEffect(StatusEffectBase statusEffect) { this._statusEffects.Add(statusEffect); }
public void SetStatusEffect(StatusEffectBase statusEffect, Blocker blocker) { StatusEffect = statusEffect; Blocker = blocker; }