public void DetachStatusEffect(StatusEffectEntity2 entity) { var targetType = stats.Keys.FirstOrDefault(x => x.Name == entity.targetStat); Assert.IsTrue(targetType != null); stats[targetType].DetachBuff(entity); }
void Detach(StatusEffectEntity2 entity) { stat.DetachStatusEffect(entity); if (onDetach != null) { onDetach(entity); } statusEffects.Remove(entity); }
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); }
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); } } }
public void RemoveBuffIcon(StatusEffectEntity2 statusEffectEntity) { if (statusEffectEntity.isBuff) { buffIcons.RemoveIcon(statusEffectEntity.statusEffectCode); } else { debuffIcons.RemoveIcon(statusEffectEntity.statusEffectCode); } }
public void AddBuffIcon(StatusEffectEntity2 statusEffectEntity) { if (statusEffectEntity.isBuff) { buffIcons.AddIcon(statusEffectEntity.statusEffectCode, statusEffectEntity.icon); } else { debuffIcons.AddIcon(statusEffectEntity.statusEffectCode, statusEffectEntity.icon); } }
void CheckBuffType(StatusEffectEntity2 buffEntity) { if (stat.KeyType.Name != buffEntity.targetStat) { Debug.LogError(string.Format("Buff type error: {0}, {1}", buffEntity.targetStat, stat.KeyType)); } }