Exemplo n.º 1
0
        //创建一个特效
        public T CreateEffectByName <T>(string effectName, EffectPlayType playType)
            where T : EffectController
        {
            effectName = effectName.ToLower();
            if (!effectDic.ContainsKey(effectName))
            {
                UtilityHelper.LogError(string.Format("Create effect by name error! -> {0}", effectName));
                return(null);
            }
            EffectController effect = effectDic[effectName].Get();

            if (effect != null && effect is T)
            {
                if (effect is T)
                {
                    //成功创建了特效
                    effect.playType = playType;
#if UNITY_EDITOR
                    effect.name = effect.effectName;
#endif
                    return((T)effect);
                }
                else
                {
                    UtilityHelper.LogError(string.Format("Create effect by name error! Type error -> {0},{1}", effectName, effect.GetType().ToString()));
                    ReturnEffect(effect);
                }
            }
            return(null);
        }
Exemplo n.º 2
0
    public void SetEffect(EffectPlayType pType, EffectType etype, int value, int turn = 0, Target target = null, int cost = 0, TriggerType trigger = TriggerType.None, GameObject animEffect = null)
    {
        if (etype == EffectType.AttackPower || etype == EffectType.SkillPower)
        {
            SetPower(etype, value);
            return;
        }
        CardEffect effect;

        switch (pType)
        {
        case EffectPlayType.triggerEffect:
            effect = new TriggerEffect()
            {
                TriggerType = trigger
            };
            break;

        case EffectPlayType.staticEffect:
            effect = new StaticEffect();
            break;

        case EffectPlayType.playEffect:
            effect = new PlayEffect();
            break;

        case EffectPlayType.activeEffect:
            effect = new ActiveEffect(cost);
            break;

        case EffectPlayType.none:
        default:
            effect = new CardEffect();
            break;
        }
        //カード効果に応じてアニメーション設定
        if (animEffect == null)
        {
            switch (etype)
            {
            case EffectType.CostAdd:
            case EffectType.UnitCostAdd:
            case EffectType.SkillDamageAdd:
            case EffectType.AttackAdd:
            case EffectType.AttackTime:
                animEffect = null;
                break;

            case EffectType.CardDest:
            case EffectType.RandCardDest: break;

            case EffectType.CardDraft:
            case EffectType.CardDraw:
            case EffectType.GetDisZoneCard:
            case EffectType.CardUnDraft:
            case EffectType.GetDispCard: break;

            case EffectType.Counter: break;

            case EffectType.Damage:
                animEffect = Resources.Load <GameObject>(Constants.CARD_EFFECT_MAGICK_FIRE);
                break;

            case EffectType.Heal:
                animEffect = Resources.Load <GameObject>(Constants.CARD_EFFECT_HEAL);
                break;
            }
        }
        effect.effectState.Add(new EffectState(etype, value, turn, target, animEffect));
        Effect.Add(effect);
    }