Пример #1
0
    public void DetachStatusEffect(StatusEffectEntity2 entity)
    {
        var targetType = stats.Keys.FirstOrDefault(x => x.Name == entity.targetStat);
        Assert.IsTrue(targetType != null);

        stats[targetType].DetachBuff(entity);
    }
Пример #2
0
 void Detach(StatusEffectEntity2 entity)
 {
     stat.DetachStatusEffect(entity);
     if (onDetach != null)
     {
         onDetach(entity);
     }
     statusEffects.Remove(entity);
 }
Пример #3
0
    public void Attach(StatusEffectEntity2 entity)
    {
        var existing = statusEffects.Keys.FirstOrDefault(x => x.effectGroup == entity.effectGroup);
        if (existing != null)
        {
            Detach(existing);
        }

        float duration = entity.expireTime > 0 ? entity.expireTime : float.PositiveInfinity;
        statusEffects.Add(entity, time + duration);
        if (onAttach != null)
        {
            onAttach(entity);
        }
        stat.AttachStatusEffect(entity);
    }
Пример #4
0
    public Buff(StatusEffectEntity2 entity, StatServer firerStat, Handle OnBuff, Handle OnDebuff)
    {
        statusEffectEntity = entity;
        name = "Buff" + entity.statusEffectCode;
        duration = entity.expireTime > 0 ? entity.expireTime : float.MaxValue;
        this.spawnEffect = entity.spawnVFX;
        this.spawnSound = entity.spawnSFX;
        this.OnBuff = OnBuff;
        this.OnDebuff = OnDebuff;

        if (!string.IsNullOrEmpty(entity.targetStat))
        {
            Type targetStatType = Type.GetType(entity.targetStat);
            if (targetStatType != null)
            {
                string strStatMod = StringTool.RemoveWhiteSpace(entity.statMod);
                string[] modTokens = strStatMod.Split(";".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
                statMod = ParseStatMod(modTokens, targetStatType, firerStat);
            }
        }
    }
Пример #5
0
 public void RemoveBuffIcon(StatusEffectEntity2 statusEffectEntity)
 {
     if (statusEffectEntity.isBuff)
     {
         buffIcons.RemoveIcon(statusEffectEntity.statusEffectCode);
     }
     else
     {
         debuffIcons.RemoveIcon(statusEffectEntity.statusEffectCode);
     }
 }
Пример #6
0
 public void AddBuffIcon(StatusEffectEntity2 statusEffectEntity)
 {
     if (statusEffectEntity.isBuff)
     {
         buffIcons.AddIcon(statusEffectEntity.statusEffectCode, statusEffectEntity.icon);
     }
     else
     {
         debuffIcons.AddIcon(statusEffectEntity.statusEffectCode, statusEffectEntity.icon);
     }
 }
Пример #7
0
 void CheckBuffType(StatusEffectEntity2 buffEntity)
 {
     if (stat.KeyType.Name != buffEntity.targetStat)
     {
         Debug.LogError(string.Format("Buff type error: {0}, {1}", buffEntity.targetStat, stat.KeyType));
     }
 }