Example #1
0
    //检测能否触发卡牌效果
    internal bool CanTriggerCardEffect(uint effectId, int targetInstId)
    {
        CardEffectTemplate effectTemplate = CardEffectTemplateData.GetData(effectId);

        if (effectTemplate == null)
        {
            return(false);
        }

        switch (effectTemplate.iEffectTrigType)
        {
        case CardEffectTrigType.NONE:
            break;

        case CardEffectTrigType.GIVE_NOT_BLOCK_DAMAGE:
            if (_battleModel.effectStat.damageLife > 0)
            {
                return(true);
            }
            return(false);

        case CardEffectTrigType.SELF_HAS_BUFF_TYPE:
            return(_battleModel.selfData.HasBuff(effectTemplate.iTrigVal));

        default:
            Debug.LogError("unhandle card EffectTrigType:" + effectTemplate.iEffectTrigType);
            break;
        }

        return(true);
    }
Example #2
0
    //处理卡牌效果
    private void HandleCardEffect(CardInstance cardInstance, uint effectId, int targetInstId = 0)
    {
        CardEffectTemplate effectTemplate = CardEffectTemplateData.GetData(effectId);

        if (effectTemplate == null)
        {
            return;
        }

        CardEffectBase cardEffect = CardEffectFactory.GetCardEffect(effectTemplate.nType);

        if (cardEffect == null)
        {
            return;
        }

        if (cardEffect.CanTriggerCardEffect(effectTemplate))
        {
            cardEffect.DoEffect(this, cardInstance, effectTemplate, targetInstId);
        }

        if (effectTemplate.nLinkId != 0)
        {
            HandleCardEffect(cardInstance, effectTemplate.nLinkId, targetInstId);
        }
    }