//检测能否触发卡牌效果 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); }
//处理卡牌效果 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); } }