/// <summary> /// 检查标记是否存在 /// </summary> /// <param name="mark"></param> /// <returns></returns> public bool CheckMark(DamageMark mark) { if (damageMark == DamageMark.None || mark == DamageMark.None) { return(false); } return((damageMark & mark) == mark); }
/// <summary> /// 删除禁止行为的标记 /// </summary> /// <param name="mark"></param> public void RemoveMark(DamageMark mark) { if (m_Lock) { Debug.LogError("非法修改Damage!"); } if (!m_Lock && mark != DamageMark.None) { damageMark &= ~mark; } }
/// <summary> /// 添加禁止为行的标记 /// </summary> /// <param name="mark"></param> public void AddMark(DamageMark mark) { if (m_Lock) { Debug.LogError("非法修改Damage!"); } if (!m_Lock && mark != DamageMark.None && !CheckMark(mark)) { damageMark |= mark; } }
public void AddMark(IPropertyController effect, OperatorType type, DamageMark mark, CheckDamageDelegate condition = null) { if (mark != DamageMark.None) { if (type == OperatorType.Add && !m_AddMark.ContainsKey(effect)) { m_AddMark.Add(effect, new MarkData <DamageMark>(mark, condition)); } else if (type == OperatorType.Remove && !m_RemoveMark.ContainsKey(effect)) { m_RemoveMark.Add(effect, new MarkData <DamageMark>(mark, condition)); } } }
public Damage(uint batchOid, IDamageCaster caster, CCreateDamageComponent creator, CTakeDamageComponent receiver, DamageSource source, DamageType type, float damageValue, float getHitTime, float hitBack, float damageInterval, DamageMark mark) { time = Time.time; if (caster == null) { Debug.LogError("caster 不可以为空"); } this.batchOid = batchOid; this.caster = caster; this.creator = creator; this.receiver = receiver; m_SourceDamageValue = damageValue; receiveDamageValue = damageValue; damageType = type; damageSource = source; this.hitBack = hitBack; this.getHitTime = getHitTime; this.damageInterval = damageInterval; if (this.getHitTime <= 0) { this.getHitTime = Config.combat.getHitTime; } if (this.damageInterval <= 0) { this.damageInterval = Config.combat.damageInterval; } damageMark = mark; m_DamageActionMark = DamageResultMark.None; m_Lock = false; }
/// <summary> /// 检查 sourceMark 是否包括 targetMark /// </summary> /// <param name="sourceMark"></param> /// <param name="targetMark"></param> /// <returns></returns> public static bool CheckMark(DamageMark sourceMark, DamageMark targetMark) { return((sourceMark & targetMark) == targetMark); }