Exemplo n.º 1
0
        /// <summary>
        /// 运行奥秘
        /// </summary>
        /// <param name="SecretCardSN"></param>
        /// <param name="ActionCode"></param>
        /// <param name="HitMySelf"></param>
        /// <returns></returns>
        public static List <String> RunSecretHit(String SecretCardSN, String ActionCode, Boolean HitMySelf, Card.Client.GameManager game)
        {
            List <String> ActionLst   = new List <string>();
            SecretCard    card        = (SecretCard)CardUtility.GetCardInfoBySN(SecretCardSN);
            var           actiontype  = Card.Server.ActionCode.GetActionType(ActionCode);
            var           actionField = ActionCode.Split(Card.CardUtility.strSplitMark.ToCharArray());

            ActionLst.Add(Card.Server.ActionCode.strHitSecret + CardUtility.strSplitMark + (HitMySelf ? CardUtility.strMe : CardUtility.strYou) +
                          CardUtility.strSplitMark + SecretCardSN);
            //HitMySelf 在自己的回合运行自己的奥秘
            switch (card.Condition)
            {
            case SecretCondition.对方召唤随从:
                //如果是召唤系的
                if (HitMySelf)
                {
                    //在自己的回合运行自己的奥秘
                    //SUMMON#YOU#M000001#POS
                    //例如:亡语的时候可能召唤一个新的随从
                    PointEffect.RunPointEffect(game.YourInfo.BattleField.BattleMinions[int.Parse(actionField[3]) - 1], card.AdditionInfo);
                    ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strYou + Card.CardUtility.strSplitMark +
                                  actionField[3] + Card.CardUtility.strSplitMark + card.AdditionInfo);
                }
                else
                {
                    //在自己的回合运行别人的奥秘
                    if (actiontype == Server.ActionCode.ActionType.Summon)
                    {
                        //SUMMON#YOU#M000001#POS
                        PointEffect.RunPointEffect(game.MyInfo.BattleField.BattleMinions[int.Parse(actionField[3]) - 1], card.AdditionInfo);
                        ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strMe + Card.CardUtility.strSplitMark +
                                      actionField[3] + Card.CardUtility.strSplitMark + card.AdditionInfo);
                    }
                    else
                    {
                        //MINION#M000001#1
                        PointEffect.RunPointEffect(game.MyInfo.BattleField.BattleMinions[int.Parse(actionField[2]) - 1], card.AdditionInfo);
                        ActionLst.Add(Card.Server.ActionCode.strPoint + Card.CardUtility.strSplitMark + CardUtility.strMe + Card.CardUtility.strSplitMark +
                                      actionField[2] + Card.CardUtility.strSplitMark + card.AdditionInfo);
                    }
                }
                break;

            default:
                break;
            }
            return(ActionLst);
        }
Exemplo n.º 2
0
    /// <summary>
    /// 创建点特效
    /// 特效只在一个位置上
    /// </summary>
    /// <param name="effectKey"></param>
    /// <param name="parent"></param>
    /// <param name="position"></param>
    /// <param name="scale"></param>
    /// <param name="durTime"></param>
    /// <param name="speed"></param>
    /// <param name="completeCallback">完成回调</param>
    /// <param name="effectLayer">特效所在渲染层</param>
    /// <param name="rotate">x,y旋转量</param>
    /// <returns>特效对象</returns>
    public EffectBehaviorAbstract CreatePointEffect(string effectKey,
                                                    Transform parent,
                                                    Vector3 position,
                                                    Vector3 scale,
                                                    float durTime,
                                                    float speed,
                                                    Action completeCallback = null,
                                                    int effectLayer         = 0,
                                                    Vector2 rotate          = new Vector2())
    {
        EffectBehaviorAbstract result = null;

        result = new PointEffect(effectKey,
                                 parent,
                                 position,
                                 scale,
                                 durTime,
                                 speed,
                                 completeCallback,
                                 effectLayer,
                                 rotate);

        return(result);
    }
Exemplo n.º 3
0
        /// <summary>
        /// 处理对方的动作
        /// </summary>
        /// <param name="ActionCommand"></param>
        /// <param name="game"></param>
        public static void Process(string ActionCommand, ActionStatus game)
        {
            string[] actField = ActionCommand.Split(CardUtility.strSplitMark.ToCharArray());
            switch (ActionCode.GetActionType(ActionCommand))
            {
            case ActionCode.ActionType.Card:
                CardEffect.ReRunEffect(1, game, actField);
                break;

            case ActionCode.ActionType.UseMinion:
                int Pos    = int.Parse(actField[2]);
                var minion = (MinionCard)CardUtility.GetCardInfoBySN(actField[1]);
                minion.初始化();
                game.AllRole.YourPublicInfo.BattleField.PutToBattle(Pos, minion);
                Buff.ResetBuff(game);
                break;

            case ActionCode.ActionType.UseWeapon:
                game.AllRole.YourPublicInfo.Hero.Weapon = (WeaponCard)CardUtility.GetCardInfoBySN(actField[1]);
                break;

            case ActionCode.ActionType.UseSecret:
                game.AllRole.YourPublicInfo.Hero.SecretCount++;;
                break;

            case ActionCode.ActionType.UseAbility:
                break;

            case ActionCode.ActionType.Fight:
                //FIGHT#1#2
                FightHandler.Fight(int.Parse(actField[2]), int.Parse(actField[1]), game, false);
                break;

            case ActionCode.ActionType.Point:
                IAtomicEffect point = new PointEffect();
                point.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.Health:
                IAtomicEffect health = new HealthEffect();
                health.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.Status:
                IAtomicEffect status = new StatusEffect();
                status.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.Transform:
                IAtomicEffect transform = new TransformEffect();
                transform.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.Attack:
                IAtomicEffect attack = new AttackEffect();
                attack.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.HitSecret:
                SecretCard.ReRunSecret(game, actField);
                break;

            case ActionCode.ActionType.Control:
                ControlEffect.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.Summon:
                SummonEffect.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.Crystal:
                CrystalEffect.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.WeaponPoint:
                WeaponPointEffect.ReRunEffect(game, actField);
                break;

            case ActionCode.ActionType.Settle:
                ActionStatus.Settle(game);
                break;
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// 运行效果
        /// </summary>
        /// <param name="game"></param>
        /// <param name="actField"></param>
        private static void RunNormalEffect(GameManager game, string[] actField)
        {
            //ATTACK#ME#POS#AP
            //Me代表对方 YOU代表自己,必须反过来
            IEffectHandler handler      = new AttackEffect();
            EffectDefine   SingleEffect = new EffectDefine();

            switch (actField[0])
            {
            case Card.Server.ActionCode.strAttack:
                handler = new AttackEffect();
                SingleEffect.ActualEffectPoint = int.Parse(actField[3]);
                break;

            case Card.Server.ActionCode.strHealth:
                handler = new HealthEffect();
                SingleEffect.ActualEffectPoint = int.Parse(actField[3]);
                if (actField.Length == 5)
                {
                    SingleEffect.AdditionInfo = actField[4];
                }
                break;

            case Card.Server.ActionCode.strStatus:
                handler = new StatusEffect();
                SingleEffect.AdditionInfo = actField[3];
                break;

            case Card.Server.ActionCode.strPoint:
                handler = new PointEffect();
                SingleEffect.AdditionInfo        = actField[3];
                SingleEffect.StandardEffectPoint = int.Parse(actField[4]);
                break;

            case Card.Server.ActionCode.strTransform:
                handler = new TransformEffect();
                SingleEffect.AdditionInfo = actField[3];
                break;
            }
            if (actField[1] == CardUtility.strYou)
            {
                switch (int.Parse(actField[2]))
                {
                case BattleFieldInfo.HeroPos:
                    handler.DealHero(game, SingleEffect, true);
                    break;

                case BattleFieldInfo.AllPos:
                    for (int i = 0; i < game.MyInfo.BattleField.MinionCount; i++)
                    {
                        handler.DealMinion(game, SingleEffect, true, i);
                    }
                    break;

                default:
                    handler.DealMinion(game, SingleEffect, true, int.Parse(actField[2]) - 1);
                    break;
                }
            }
            else
            {
                switch (int.Parse(actField[2]))
                {
                case BattleFieldInfo.HeroPos:
                    handler.DealHero(game, SingleEffect, false);
                    break;

                case BattleFieldInfo.AllPos:
                    for (int i = 0; i < game.YourInfo.BattleField.MinionCount; i++)
                    {
                        handler.DealMinion(game, SingleEffect, false, i);
                    }
                    break;

                default:
                    handler.DealMinion(game, SingleEffect, false, int.Parse(actField[2]) - 1);
                    break;
                }
            }
        }