Esempio n. 1
0
 /// <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);
 }
Esempio n. 2
0
 /// <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;
     }
 }
Esempio n. 3
0
 /// <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;
     }
 }
Esempio n. 4
0
 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));
         }
     }
 }
Esempio n. 5
0
    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;
    }
Esempio n. 6
0
 /// <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);
 }