Esempio n. 1
0
    /// <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();
    }
Esempio n. 2
0
    private void RemoveStatusEffect(StatusEffectBase statusEffect)
    {
        statusEffect.End();

        activeStatusEffects.Remove(statusEffect);

        UpdateProcessingState();
    }
Esempio n. 3
0
    private void AddNewStatusEffectDisplay(StatusEffectBase statusEffect)
    {
        StatusEffectDisplay statusEffectDisplay = Instantiate(statusEffectDisplayPrefab, transform).GetComponent <StatusEffectDisplay>();

        statusEffectDisplay.InitializeDisplay(statusEffect);

        activeStatusEffectsDisplays.Add(statusEffectDisplay);
    }
Esempio n. 4
0
 /// <summary>
 /// Supprime le statut du joueur
 /// </summary>
 public void DeleteStatusEffect()
 {
     if (statusEffect != null)
     {
         Destroy(statusEffect.gameObject);
         statusEffect = null;
     }
     canAct = true;
 }
Esempio n. 5
0
    public void InitializeDisplay(StatusEffectBase statusEffect)
    {
        this.statusEffect = statusEffect;

        timeRemaining.text = statusEffect.TimeRemaining.ToString();
        image.sprite       = statusEffect.StatusEffectData.Icon;

        statusEffect.OnStatusEffectTick += UpdateDisplay;
    }
Esempio n. 6
0
        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);
        }
Esempio n. 9
0
 /// <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;
 }
Esempio n. 11
0
 public void AddStatusEffect(StatusEffectBase statusEffect)
 {
     this._statusEffects.Add(statusEffect);
 }
Esempio n. 12
0
 public void SetStatusEffect(StatusEffectBase statusEffect, Blocker blocker)
 {
     StatusEffect = statusEffect;
     Blocker      = blocker;
 }