Example #1
0
 /// <summary>
 /// TargetSelect
 /// </summary>
 /// <param name="option"></param>
 /// <param name="mGame"></param>
 public TargetSelect(CardUtility.PositionSelectOption option, GameManager mGame)
 {
     InitializeComponent();
     SelectOption = option;
     game = mGame;
     嘲讽限制 = option.嘲讽限制;
     Position.Postion = -1;
 }
Example #2
0
 /// <summary>
 /// TargetSelect
 /// </summary>
 /// <param name="option"></param>
 /// <param name="_actionStatus"></param>
 public TargetSelect(CardUtility.位置选择用参数结构体 option, ActionStatus _actionStatus)
 {
     InitializeComponent();
     SelectOption = option;
     actionStatus = _actionStatus;
     Position.位置 = -1;
     ctlUsageCard.CardInfo = GameManager.MyClientManager.CurrentActiveCard;
     ctlUsageCard.Enabled = false;
     ctlUsageCard.Visible = true;
 }
Example #3
0
 /// <summary>
 /// 法术执行
 /// </summary>
 /// <param name="game"></param>
 /// <returns></returns>
 public List<string> RunEffect(ActionStatus game, CardUtility.目标选择方向枚举 Direct)
 {
     List<string> Result = new List<string>();
     switch (Direct)
     {
         case CardUtility.目标选择方向枚举.本方:
             //#CARD#ME#M000001
             DrawMyCard(game, Result);
             break;
         case CardUtility.目标选择方向枚举.对方:
             DrawYourCard(game, Result);
             break;
         case CardUtility.目标选择方向枚举.双方:
             DrawMyCard(game, Result);
             DrawYourCard(game, Result);
             break;
     }
     return Result;
 }
Example #4
0
        /// <summary>
        /// 施法对象列表
        /// </summary>
        /// <param name="singleEffect"></param>
        /// <param name="game"></param>
        /// <param name="PosInfo"></param>
        /// <param name="RandSeed"></param>
        /// <returns></returns>
        public static List<string> GetTargetList(CardUtility.位置选择用参数结构体 SelectOpt, ActionStatus game, int RandSeed)
        {
            List<string> Result = new List<string>();

            if (SelectOpt.EffictTargetSelectMode == CardUtility.目标选择模式枚举.随机)
            {
                //随机的对象时随从的时候,如果没有随从,直接退出
                if (SelectOpt.EffectTargetSelectDirect == CardUtility.目标选择方向枚举.本方 &&
                    SelectOpt.EffectTargetSelectRole == CardUtility.目标选择角色枚举.随从)
                {
                    if (game.AllRole.MyPublicInfo.BattleField.MinionCount == 0) return Result;
                }
                if (SelectOpt.EffectTargetSelectDirect == CardUtility.目标选择方向枚举.对方 &&
                    SelectOpt.EffectTargetSelectRole == CardUtility.目标选择角色枚举.随从)
                {
                    if (game.AllRole.YourPublicInfo.BattleField.MinionCount == 0) return Result;
                }
                if (SelectOpt.EffectTargetSelectDirect == CardUtility.目标选择方向枚举.对方 &&
                    SelectOpt.EffectTargetSelectRole == CardUtility.目标选择角色枚举.随从)
                {
                    if (game.AllRole.MyPublicInfo.BattleField.MinionCount + game.AllRole.YourPublicInfo.BattleField.MinionCount == 0) return Result;
                }

            }
            switch (SelectOpt.EffictTargetSelectMode)
            {
                case CardUtility.目标选择模式枚举.随机:
                    Random t = new Random(DateTime.Now.Millisecond + RandSeed);
                    switch (SelectOpt.EffectTargetSelectDirect)
                    {
                        case CardUtility.目标选择方向枚举.本方:
                            switch (SelectOpt.EffectTargetSelectRole)
                            {
                                case CardUtility.目标选择角色枚举.随从:
                                    SelectOpt.SelectedPos.位置 = t.Next(1, game.AllRole.MyPublicInfo.BattleField.MinionCount + 1);
                                    SelectOpt.SelectedPos.本方对方标识 = true;
                                    break;
                                case CardUtility.目标选择角色枚举.所有角色:
                                    SelectOpt.SelectedPos.位置 = t.Next(BattleFieldInfo.HeroPos, game.AllRole.MyPublicInfo.BattleField.MinionCount + 1);
                                    SelectOpt.SelectedPos.本方对方标识 = true;
                                    break;
                            }
                            //ME#POS
                            Result.Add(CardUtility.strMe + CardUtility.strSplitMark + SelectOpt.SelectedPos.位置.ToString("D1"));
                            break;
                        case CardUtility.目标选择方向枚举.对方:
                            switch (SelectOpt.EffectTargetSelectRole)
                            {
                                case CardUtility.目标选择角色枚举.随从:
                                    SelectOpt.SelectedPos.位置 = t.Next(1, game.AllRole.YourPublicInfo.BattleField.MinionCount + 1);
                                    SelectOpt.SelectedPos.本方对方标识 = false;
                                    break;
                                case CardUtility.目标选择角色枚举.所有角色:
                                    SelectOpt.SelectedPos.位置 = t.Next(BattleFieldInfo.HeroPos, game.AllRole.YourPublicInfo.BattleField.MinionCount + 1);
                                    SelectOpt.SelectedPos.本方对方标识 = false;
                                    break;
                            }
                            //ME#POS
                            Result.Add(CardUtility.strYou + CardUtility.strSplitMark + SelectOpt.SelectedPos.位置.ToString("D1"));
                            break;
                        case CardUtility.目标选择方向枚举.双方:
                            //本方对方
                            int MinionCount;
                            if (t.Next(1, 3) == 1)
                            {
                                SelectOpt.SelectedPos.本方对方标识 = true;
                                MinionCount = game.AllRole.MyPublicInfo.BattleField.MinionCount;
                            }
                            else
                            {
                                SelectOpt.SelectedPos.本方对方标识 = false;
                                MinionCount = game.AllRole.YourPublicInfo.BattleField.MinionCount;
                            }
                            switch (SelectOpt.EffectTargetSelectRole)
                            {
                                case CardUtility.目标选择角色枚举.随从:
                                    SelectOpt.SelectedPos.位置 = t.Next(1, MinionCount + 1);
                                    break;
                                case CardUtility.目标选择角色枚举.所有角色:
                                    SelectOpt.SelectedPos.位置 = t.Next(BattleFieldInfo.HeroPos, MinionCount + 1);
                                    break;
                            }
                            //ME#POS
                            Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + SelectOpt.SelectedPos.位置.ToString("D1"));
                            break;
                        default:
                            break;
                    }
                    break;
                case CardUtility.目标选择模式枚举.全体:
                case CardUtility.目标选择模式枚举.横扫:
                    switch (SelectOpt.EffectTargetSelectDirect)
                    {
                        case CardUtility.目标选择方向枚举.本方:
                            switch (SelectOpt.EffectTargetSelectRole)
                            {
                                case CardUtility.目标选择角色枚举.随从:
                                    Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.AllMinionPos.ToString("D1"));
                                    break;
                                case CardUtility.目标选择角色枚举.英雄:
                                    Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                    break;
                                case CardUtility.目标选择角色枚举.所有角色:
                                    Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.AllRolePos.ToString("D1"));
                                    break;
                            }
                            break;
                        case CardUtility.目标选择方向枚举.对方:
                            switch (SelectOpt.EffectTargetSelectRole)
                            {
                                case CardUtility.目标选择角色枚举.随从:
                                    Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.AllMinionPos.ToString("D1"));
                                    break;
                                case CardUtility.目标选择角色枚举.英雄:
                                    Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                    break;
                                case CardUtility.目标选择角色枚举.所有角色:
                                    Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.AllRolePos.ToString("D1"));
                                    break;
                            }
                            break;
                        case CardUtility.目标选择方向枚举.双方:
                            switch (SelectOpt.EffectTargetSelectRole)
                            {
                                case CardUtility.目标选择角色枚举.随从:
                                    Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.AllMinionPos.ToString("D1"));
                                    Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.AllMinionPos.ToString("D1"));
                                    break;
                                case CardUtility.目标选择角色枚举.英雄:
                                    Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                    Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                    break;
                                case CardUtility.目标选择角色枚举.所有角色:
                                    Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.AllRolePos.ToString("D1"));
                                    Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.AllRolePos.ToString("D1"));
                                    break;
                            }
                            break;
                    }
                    break;
                case CardUtility.目标选择模式枚举.指定:
                    Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + SelectOpt.SelectedPos.位置.ToString("D1"));
                    break;
                case CardUtility.目标选择模式枚举.相邻:
                case CardUtility.目标选择模式枚举.相邻排除指定位置:
                    if (SelectOpt.EffictTargetSelectMode == CardUtility.目标选择模式枚举.相邻)
                    {
                        Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + SelectOpt.SelectedPos.位置.ToString("D1"));
                    }
                    //左侧追加
                    if (SelectOpt.SelectedPos.位置 != 1)
                        Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + (SelectOpt.SelectedPos.位置 - 1).ToString("D1"));
                    //右侧追加
                    if (SelectOpt.SelectedPos.本方对方标识)
                    {
                        if (SelectOpt.SelectedPos.位置 != game.AllRole.MyPublicInfo.BattleField.MinionCount)
                            Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + (SelectOpt.SelectedPos.位置 + 1).ToString("D1"));
                    }
                    else
                    {
                        if (SelectOpt.SelectedPos.位置 != game.AllRole.YourPublicInfo.BattleField.MinionCount)
                            Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + (SelectOpt.SelectedPos.位置 + 1).ToString("D1"));
                    }
                    break;
                case CardUtility.目标选择模式枚举.不用选择:
                    if (SelectOpt.EffectTargetSelectRole == CardUtility.目标选择角色枚举.英雄)
                    {
                        switch (SelectOpt.EffectTargetSelectDirect)
                        {
                            case CardUtility.目标选择方向枚举.本方:
                                Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                break;
                            case CardUtility.目标选择方向枚举.对方:
                                Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                break;
                            case CardUtility.目标选择方向枚举.双方:
                                Result.Add(CardUtility.strMe + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                Result.Add(CardUtility.strYou + CardUtility.strSplitMark + BattleFieldInfo.HeroPos.ToString("D1"));
                                break;
                            default:
                                break;
                        }
                    }
                    break;
            }
            return Result;
        }
Example #5
0
 /// <summary>
 /// 设置是否能成为当前动作的对象
 /// </summary>
 /// <param name="SelectOption"></param>
 /// <param name="game"></param>
 public static void SetTargetSelectEnable(CardUtility.位置选择用参数结构体 SelectOption, ActionStatus game)
 {
     game.AllRole.MyPublicInfo.Hero.能否成为动作对象 = false;
     for (int i = 0; i < game.AllRole.MyPublicInfo.BattleField.MinionCount; i++)
     {
         game.AllRole.MyPublicInfo.BattleField.BattleMinions[i].能否成为动作对象 = false;
     }
     game.AllRole.YourPublicInfo.Hero.能否成为动作对象 = false;
     for (int i = 0; i < game.AllRole.YourPublicInfo.BattleField.MinionCount; i++)
     {
         game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].能否成为动作对象 = false;
     }
     switch (SelectOption.EffectTargetSelectDirect)
     {
         case CardUtility.目标选择方向枚举.本方:
             switch (SelectOption.EffectTargetSelectRole)
             {
                 case CardUtility.目标选择角色枚举.随从:
                 case CardUtility.目标选择角色枚举.所有角色:
                     for (int i = 0; i < game.AllRole.MyPublicInfo.BattleField.MinionCount; i++)
                     {
                         if (符合选择条件(game.AllRole.MyPublicInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                         {
                             game.AllRole.MyPublicInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.AllRole.MyPublicInfo.BattleField.BattleMinions[i].潜行特性;
                         }
                     }
                     if (SelectOption.EffectTargetSelectRole == CardUtility.目标选择角色枚举.所有角色) game.AllRole.MyPublicInfo.Hero.能否成为动作对象 = true;
                     break;
                 case CardUtility.目标选择角色枚举.英雄:
                     game.AllRole.MyPublicInfo.Hero.能否成为动作对象 = true;
                     break;
             }
             break;
         case CardUtility.目标选择方向枚举.对方:
             bool Has嘲讽 = false;
             for (int i = 0; i < game.AllRole.YourPublicInfo.BattleField.MinionCount; i++)
             {
                 if (game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].嘲讽特性 &&
                   (!game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].潜行特性))
                 {
                     //潜行特性的时候,如果嘲讽特性,则嘲讽特性无效
                     Has嘲讽 = true;
                     break;
                 }
             }
             switch (SelectOption.EffectTargetSelectRole)
             {
                 case CardUtility.目标选择角色枚举.英雄:
                     game.AllRole.YourPublicInfo.Hero.能否成为动作对象 = true;
                     break;
                 case CardUtility.目标选择角色枚举.随从:
                 case CardUtility.目标选择角色枚举.所有角色:
                     if (SelectOption.嘲讽限制 && Has嘲讽)
                     {
                         game.AllRole.YourPublicInfo.Hero.能否成为动作对象 = false;
                         for (int i = 0; i < game.AllRole.YourPublicInfo.BattleField.MinionCount; i++)
                         {
                             //只能选择嘲讽对象
                             if (game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].嘲讽特性)
                             {
                                 game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].潜行特性;
                             }
                         }
                     }
                     else
                     {
                         for (int i = 0; i < game.AllRole.YourPublicInfo.BattleField.MinionCount; i++)
                         {
                             if (符合选择条件(game.AllRole.YourPublicInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                                 game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].潜行特性;
                         }
                     }
                     if (SelectOption.EffectTargetSelectRole == CardUtility.目标选择角色枚举.所有角色)
                     {
                         if (!(SelectOption.嘲讽限制 && Has嘲讽)) game.AllRole.YourPublicInfo.Hero.能否成为动作对象 = true;
                     }
                     break;
             }
             break;
         case CardUtility.目标选择方向枚举.双方:
             switch (SelectOption.EffectTargetSelectRole)
             {
                 case CardUtility.目标选择角色枚举.英雄:
                     game.AllRole.MyPublicInfo.Hero.能否成为动作对象 = true;
                     game.AllRole.YourPublicInfo.Hero.能否成为动作对象 = true;
                     break;
                 case CardUtility.目标选择角色枚举.所有角色:
                 case CardUtility.目标选择角色枚举.随从:
                     if (SelectOption.EffectTargetSelectRole == CardUtility.目标选择角色枚举.所有角色)
                     {
                         game.AllRole.MyPublicInfo.Hero.能否成为动作对象 = true;
                         game.AllRole.YourPublicInfo.Hero.能否成为动作对象 = true;
                     }
                     for (int i = 0; i < game.AllRole.MyPublicInfo.BattleField.MinionCount; i++)
                     {
                         if (符合选择条件(game.AllRole.MyPublicInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.AllRole.MyPublicInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.AllRole.MyPublicInfo.BattleField.BattleMinions[i].潜行特性;
                     }
                     for (int i = 0; i < game.AllRole.YourPublicInfo.BattleField.MinionCount; i++)
                     {
                         if (符合选择条件(game.AllRole.YourPublicInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.AllRole.YourPublicInfo.BattleField.BattleMinions[i].潜行特性;
                     }
                     break;
             }
             break;
     }
     //战吼等时候,不能选择自己
     if (SelectOption.CanNotSelectPos.位置 != BattleFieldInfo.UnknowPos)
     {
         if (SelectOption.CanNotSelectPos.本方对方标识)
         {
             if (SelectOption.CanNotSelectPos.位置 == BattleFieldInfo.HeroPos)
             {
                 game.AllRole.MyPublicInfo.Hero.能否成为动作对象 = false;
             }
             else
             {
                 game.AllRole.MyPublicInfo.BattleField.BattleMinions[SelectOption.CanNotSelectPos.位置 - 1].能否成为动作对象 = false;
             }
         }
         else
         {
             if (SelectOption.CanNotSelectPos.位置 == BattleFieldInfo.HeroPos)
             {
                 game.AllRole.YourPublicInfo.Hero.能否成为动作对象 = false;
             }
             else
             {
                 game.AllRole.YourPublicInfo.BattleField.BattleMinions[SelectOption.CanNotSelectPos.位置 - 1].能否成为动作对象 = false;
             }
         }
     }
 }
Example #6
0
 /// <summary>
 /// 针对系统的法术效果
 /// </summary>
 /// <param name="game"></param>
 /// <param name="ConvertPosDirect"></param>
 /// <param name="Ability"></param>
 /// <returns></returns>
 private List<string> RunGameSystemEffect(GameManager game, bool ConvertPosDirect, AtomicEffectDefine effect, CardUtility.PositionSelectOption Option)
 {
     List<string> Result = new List<string>();
     switch (effect.AtomicEffectType)
     {
         case AtomicEffectDefine.AtomicEffectEnum.卡牌:
             CardEffect CardAtomic = new CardEffect();
             CardAtomic.GetField(effect.InfoArray);
             return CardAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
         case AtomicEffectDefine.AtomicEffectEnum.水晶:
             CrystalEffect CrystalAtomic = new CrystalEffect();
             CrystalAtomic.GetField(effect.InfoArray);
             return CrystalAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
         case AtomicEffectDefine.AtomicEffectEnum.武器:
             WeaponPointEffect WeaponPointAtomic = new WeaponPointEffect();
             WeaponPointAtomic.GetField(effect.InfoArray);
             return WeaponPointAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
         case AtomicEffectDefine.AtomicEffectEnum.召唤:
             SummonEffect SummonAtomic = new SummonEffect();
             SummonAtomic.GetField(effect.InfoArray);
             return SummonAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
     }
     return Result;
 }
Example #7
0
 /// <summary>
 /// 施法对象列表
 /// </summary>
 /// <param name="singleEffect"></param>
 /// <param name="game"></param>
 /// <param name="PosInfo"></param>
 /// <param name="RandSeed"></param>
 /// <returns></returns>
 public static List<string> GetTargetList(CardUtility.PositionSelectOption SelectOpt, Client.GameManager game, int RandSeed)
 {
     List<string> Result = new List<string>();
     switch (SelectOpt.EffictTargetSelectMode)
     {
         case CardUtility.TargetSelectModeEnum.随机:
             Random t = new Random(DateTime.Now.Millisecond + RandSeed);
             switch (SelectOpt.EffectTargetSelectDirect)
             {
                 case CardUtility.TargetSelectDirectEnum.本方:
                     switch (SelectOpt.EffectTargetSelectRole)
                     {
                         case CardUtility.TargetSelectRoleEnum.随从:
                             SelectOpt.SelectedPos.Postion = t.Next(1, game.MyInfo.BattleField.MinionCount + 1);
                             SelectOpt.SelectedPos.本方对方标识 = true;
                             break;
                         case CardUtility.TargetSelectRoleEnum.所有角色:
                             SelectOpt.SelectedPos.Postion = t.Next(Client.BattleFieldInfo.HeroPos, game.MyInfo.BattleField.MinionCount + 1);
                             SelectOpt.SelectedPos.本方对方标识 = true;
                             break;
                     }
                     //ME#POS
                     Result.Add(CardUtility.strMe + CardUtility.strSplitMark + SelectOpt.SelectedPos.Postion.ToString("D1"));
                     break;
                 case CardUtility.TargetSelectDirectEnum.对方:
                     switch (SelectOpt.EffectTargetSelectRole)
                     {
                         case CardUtility.TargetSelectRoleEnum.随从:
                             SelectOpt.SelectedPos.Postion = t.Next(1, game.YourInfo.BattleField.MinionCount + 1);
                             SelectOpt.SelectedPos.本方对方标识 = false;
                             break;
                         case CardUtility.TargetSelectRoleEnum.所有角色:
                             SelectOpt.SelectedPos.Postion = t.Next(Client.BattleFieldInfo.HeroPos, game.YourInfo.BattleField.MinionCount + 1);
                             SelectOpt.SelectedPos.本方对方标识 = false;
                             break;
                     }
                     //ME#POS
                     Result.Add(CardUtility.strYou + CardUtility.strSplitMark + SelectOpt.SelectedPos.Postion.ToString("D1"));
                     break;
                 case CardUtility.TargetSelectDirectEnum.双方:
                     //本方对方
                     int MinionCount;
                     if (t.Next(1, 3) == 1)
                     {
                         SelectOpt.SelectedPos.本方对方标识 = true;
                         MinionCount = game.MyInfo.BattleField.MinionCount;
                     }
                     else
                     {
                         SelectOpt.SelectedPos.本方对方标识 = false;
                         MinionCount = game.YourInfo.BattleField.MinionCount;
                     }
                     switch (SelectOpt.EffectTargetSelectRole)
                     {
                         case CardUtility.TargetSelectRoleEnum.随从:
                             SelectOpt.SelectedPos.Postion = t.Next(1, MinionCount + 1);
                             break;
                         case CardUtility.TargetSelectRoleEnum.所有角色:
                             SelectOpt.SelectedPos.Postion = t.Next(Client.BattleFieldInfo.HeroPos, MinionCount + 1);
                             break;
                     }
                     //ME#POS
                     Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + SelectOpt.SelectedPos.Postion.ToString("D1"));
                     break;
                 default:
                     break;
             }
             break;
         case CardUtility.TargetSelectModeEnum.全体:
         case CardUtility.TargetSelectModeEnum.横扫:
             switch (SelectOpt.EffectTargetSelectDirect)
             {
                 case CardUtility.TargetSelectDirectEnum.本方:
                     switch (SelectOpt.EffectTargetSelectRole)
                     {
                         case CardUtility.TargetSelectRoleEnum.随从:
                             Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.AllMinionPos.ToString("D1"));
                             break;
                         case CardUtility.TargetSelectRoleEnum.英雄:
                             Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                             break;
                         case CardUtility.TargetSelectRoleEnum.所有角色:
                             Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.AllRolePos.ToString("D1"));
                             break;
                     }
                     break;
                 case CardUtility.TargetSelectDirectEnum.对方:
                     switch (SelectOpt.EffectTargetSelectRole)
                     {
                         case CardUtility.TargetSelectRoleEnum.随从:
                             Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.AllMinionPos.ToString("D1"));
                             break;
                         case CardUtility.TargetSelectRoleEnum.英雄:
                             Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                             break;
                         case CardUtility.TargetSelectRoleEnum.所有角色:
                             Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.AllRolePos.ToString("D1"));
                             break;
                     }
                     break;
                 case CardUtility.TargetSelectDirectEnum.双方:
                     switch (SelectOpt.EffectTargetSelectRole)
                     {
                         case CardUtility.TargetSelectRoleEnum.随从:
                             Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.AllMinionPos.ToString("D1"));
                             Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.AllMinionPos.ToString("D1"));
                             break;
                         case CardUtility.TargetSelectRoleEnum.英雄:
                             Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                             Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                             break;
                         case CardUtility.TargetSelectRoleEnum.所有角色:
                             Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.AllRolePos.ToString("D1"));
                             Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.AllRolePos.ToString("D1"));
                             break;
                     }
                     break;
             }
             break;
         case CardUtility.TargetSelectModeEnum.指定:
         case CardUtility.TargetSelectModeEnum.继承:
             Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + SelectOpt.SelectedPos.Postion.ToString("D1"));
             break;
         case CardUtility.TargetSelectModeEnum.相邻:
             Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + SelectOpt.SelectedPos.Postion.ToString("D1"));
             //左侧追加
             if (SelectOpt.SelectedPos.Postion != 1)
                 Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + (SelectOpt.SelectedPos.Postion - 1).ToString("D1"));
             //右侧追加
             if (SelectOpt.SelectedPos.本方对方标识)
             {
                 if (SelectOpt.SelectedPos.Postion != game.MyInfo.BattleField.MinionCount)
                     Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + (SelectOpt.SelectedPos.Postion + 1).ToString("D1"));
             }
             else
             {
                 if (SelectOpt.SelectedPos.Postion != game.YourInfo.BattleField.MinionCount)
                     Result.Add((SelectOpt.SelectedPos.本方对方标识 ? CardUtility.strMe : CardUtility.strYou) + CardUtility.strSplitMark + (SelectOpt.SelectedPos.Postion + 1).ToString("D1"));
             }
             break;
         case CardUtility.TargetSelectModeEnum.不用选择:
             if (SelectOpt.EffectTargetSelectRole == CardUtility.TargetSelectRoleEnum.英雄)
             {
                 switch (SelectOpt.EffectTargetSelectDirect)
                 {
                     case CardUtility.TargetSelectDirectEnum.本方:
                         Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                         break;
                     case CardUtility.TargetSelectDirectEnum.对方:
                         Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                         break;
                     case CardUtility.TargetSelectDirectEnum.双方:
                         Result.Add(CardUtility.strMe + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                         Result.Add(CardUtility.strYou + CardUtility.strSplitMark + Client.BattleFieldInfo.HeroPos.ToString("D1"));
                         break;
                     default:
                         break;
                 }
             }
             break;
     }
     return Result;
 }
Example #8
0
 /// <summary>
 /// 针对系统的法术效果
 /// </summary>
 /// <param name="game"></param>
 /// <param name="ConvertPosDirect"></param>
 /// <param name="Ability"></param>
 /// <returns></returns>
 public static List<string> RunGameSystemEffect(ActionStatus game, AtomicEffectDefine effect, CardUtility.位置选择用参数结构体 Option)
 {
     List<string> Result = new List<string>();
     switch (effect.AtomicEffectType)
     {
         case AtomicEffectDefine.AtomicEffectEnum.卡牌:
             CardEffect CardAtomic = new CardEffect();
             CardAtomic.GetField(effect.InfoArray);
             return CardAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
         case AtomicEffectDefine.AtomicEffectEnum.水晶:
             CrystalEffect CrystalAtomic = new CrystalEffect();
             CrystalAtomic.GetField(effect.InfoArray);
             return CrystalAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
         case AtomicEffectDefine.AtomicEffectEnum.武器:
             WeaponPointEffect WeaponPointAtomic = new WeaponPointEffect();
             WeaponPointAtomic.GetField(effect.InfoArray);
             return WeaponPointAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
         case AtomicEffectDefine.AtomicEffectEnum.召唤:
             SummonEffect SummonAtomic = new SummonEffect();
             SummonAtomic.GetField(effect.InfoArray);
             return SummonAtomic.RunEffect(game, Option.EffectTargetSelectDirect);
     }
     return Result;
 }
Example #9
0
 /// <summary>
 /// 法术执行
 /// </summary>
 /// <param name="game"></param>
 /// <returns></returns>
 public List<string> RunEffect(GameManager game, CardUtility.TargetSelectDirectEnum Direct)
 {
     List<string> Result = new List<string>();
     switch (Direct)
     {
         case CardUtility.TargetSelectDirectEnum.本方:
             //#CARD#ME#M000001
             if (String.IsNullOrEmpty(指定卡牌编号) || 指定卡牌编号 == CardUtility.strIgnore)
             {
                 var drawCards = Engine.Client.ClientRequest.DrawCard(game.GameId.ToString(GameServer.GameIdFormat), game.IsFirst, 1);
                 if (drawCards.Count == 1)
                 {
                     game.MySelfInfo.handCards.Add(Engine.Utility.CardUtility.GetCardInfoBySN(drawCards[0]));
                     game.MyInfo.HandCardCount++;
                     game.MyInfo.RemainCardDeckCount--;
                     Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strMe);
                 }
             }
             else
             {
                 game.MySelfInfo.handCards.Add((Engine.Utility.CardUtility.GetCardInfoBySN(指定卡牌编号)));
                 game.MyInfo.HandCardCount++;
                 Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strMe);
             }
             break;
         case CardUtility.TargetSelectDirectEnum.对方:
             if (String.IsNullOrEmpty(指定卡牌编号) || 指定卡牌编号 == CardUtility.strIgnore)
             {
                 if (game.YourInfo.RemainCardDeckCount > 0)
                 {
                     game.YourInfo.HandCardCount++;
                     game.YourInfo.RemainCardDeckCount--;
                     Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strYou);
                 }
             }
             else
             {
                 game.YourInfo.HandCardCount++;
                 Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strYou + CardUtility.strSplitMark + 指定卡牌编号);
             }
             break;
         case CardUtility.TargetSelectDirectEnum.双方:
             if (String.IsNullOrEmpty(指定卡牌编号) || 指定卡牌编号 == CardUtility.strIgnore)
             {
                 var drawCards = Engine.Client.ClientRequest.DrawCard(game.GameId.ToString(GameServer.GameIdFormat), game.IsFirst, 1);
                 if (drawCards.Count == 1)
                 {
                     game.MySelfInfo.handCards.Add(Engine.Utility.CardUtility.GetCardInfoBySN(drawCards[0]));
                     game.MyInfo.HandCardCount++;
                     game.MyInfo.RemainCardDeckCount--;
                     Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strMe);
                 }
             }
             else
             {
                 game.MySelfInfo.handCards.Add((Engine.Utility.CardUtility.GetCardInfoBySN(指定卡牌编号)));
                 game.MyInfo.HandCardCount++;
                 Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strMe);
             }
             if (String.IsNullOrEmpty(指定卡牌编号) || 指定卡牌编号 == CardUtility.strIgnore)
             {
                 if (game.YourInfo.RemainCardDeckCount > 0)
                 {
                     game.YourInfo.HandCardCount++;
                     game.YourInfo.RemainCardDeckCount--;
                     Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strYou);
                 }
             }
             else
             {
                 game.YourInfo.HandCardCount++;
                 Result.Add(ActionCode.strCard + CardUtility.strSplitMark + CardUtility.strYou + CardUtility.strSplitMark + 指定卡牌编号);
             }
             break;
     }
     return Result;
 }
Example #10
0
 /// <summary>
 /// 选择目标
 /// </summary>
 /// <returns></returns>
 private CardUtility.指定位置结构体 SelectPanel(CardUtility.位置选择用参数结构体 SelectOpt)
 {
     var frm = new TargetSelect(SelectOpt, GameManager.MyClientManager.actionStatus);
     frm.ShowDialog();
     var SelectPos = frm.Position;
     return SelectPos;
 }
Example #11
0
 /// <summary>
 /// 选择目标
 /// </summary>
 /// <returns></returns>
 private CardUtility.TargetPosition SelectPanel(CardUtility.PositionSelectOption SelectOpt)
 {
     var frm = new TargetSelect(SelectOpt, game);
     frm.ShowDialog();
     var SelectPos = frm.Position;
     return SelectPos;
 }
Example #12
0
 /// <summary>
 /// 设置是否能成为当前动作的对象
 /// </summary>
 /// <param name="SelectOption"></param>
 /// <param name="game"></param>
 public static void SetTargetSelectEnable(CardUtility.PositionSelectOption SelectOption, GameManager game)
 {
     switch (SelectOption.EffectTargetSelectDirect)
     {
         case CardUtility.TargetSelectDirectEnum.本方:
             switch (SelectOption.EffectTargetSelectRole)
             {
                 case CardUtility.TargetSelectRoleEnum.随从:
                     for (int i = 0; i < game.MyInfo.BattleField.MinionCount; i++)
                     {
                         if (Engine.Utility.CardUtility.符合选择条件(game.MyInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.MyInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                         game.MyInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.MyInfo.BattleField.BattleMinions[i].潜行特性;
                     }
                     break;
                 case CardUtility.TargetSelectRoleEnum.英雄:
                     game.MyInfo.能否成为动作对象 = true;
                     break;
                 case CardUtility.TargetSelectRoleEnum.所有角色:
                     game.MyInfo.能否成为动作对象 = true;
                     for (int i = 0; i < game.MyInfo.BattleField.MinionCount; i++)
                     {
                         if (Engine.Utility.CardUtility.符合选择条件(game.MyInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.MyInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                         game.MyInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.MyInfo.BattleField.BattleMinions[i].潜行特性;
                     }
                     break;
             }
             break;
         case CardUtility.TargetSelectDirectEnum.对方:
             switch (SelectOption.EffectTargetSelectRole)
             {
                 case CardUtility.TargetSelectRoleEnum.随从:
                     for (int i = 0; i < game.YourInfo.BattleField.MinionCount; i++)
                     {
                         if (Engine.Utility.CardUtility.符合选择条件(game.YourInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                         game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.YourInfo.BattleField.BattleMinions[i].潜行特性;
                     }
                     break;
                 case CardUtility.TargetSelectRoleEnum.英雄:
                     game.YourInfo.能否成为动作对象 = true;
                     break;
                 case CardUtility.TargetSelectRoleEnum.所有角色:
                     Boolean Has嘲讽 = false;
                     for (int i = 0; i < game.YourInfo.BattleField.MinionCount; i++)
                     {
                         if (game.YourInfo.BattleField.BattleMinions[i].嘲讽特性 &&
                             (!game.YourInfo.BattleField.BattleMinions[i].潜行特性))
                         {
                             //嘲讽特性的时候,如果潜行特性,则潜行特性无效
                             Has嘲讽 = true;
                             break;
                         }
                     }
                     if (SelectOption.嘲讽限制 && Has嘲讽)
                     {
                         game.YourInfo.能否成为动作对象 = false;
                         for (int i = 0; i < game.YourInfo.BattleField.MinionCount; i++)
                         {
                             //只能选择嘲讽对象
                             if (game.YourInfo.BattleField.BattleMinions[i].嘲讽特性)
                                 game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                             game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.YourInfo.BattleField.BattleMinions[i].潜行特性;
                         }
                     }
                     else
                     {
                         game.YourInfo.能否成为动作对象 = true;
                         for (int i = 0; i < game.YourInfo.BattleField.MinionCount; i++)
                         {
                             if (Engine.Utility.CardUtility.符合选择条件(game.YourInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                                 game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                             game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = !game.YourInfo.BattleField.BattleMinions[i].潜行特性;
                         }
                     }
                     break;
             }
             break;
         case CardUtility.TargetSelectDirectEnum.双方:
             switch (SelectOption.EffectTargetSelectRole)
             {
                 case CardUtility.TargetSelectRoleEnum.随从:
                     for (int i = 0; i < game.MyInfo.BattleField.MinionCount; i++)
                     {
                         if (Engine.Utility.CardUtility.符合选择条件(game.MyInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.MyInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                     }
                     for (int i = 0; i < game.YourInfo.BattleField.MinionCount; i++)
                     {
                         if (Engine.Utility.CardUtility.符合选择条件(game.YourInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                     }
                     break;
                 case CardUtility.TargetSelectRoleEnum.英雄:
                     game.MyInfo.能否成为动作对象 = true;
                     game.YourInfo.能否成为动作对象 = true;
                     break;
                 case CardUtility.TargetSelectRoleEnum.所有角色:
                     game.MyInfo.能否成为动作对象 = true;
                     game.YourInfo.能否成为动作对象 = true;
                     for (int i = 0; i < game.MyInfo.BattleField.MinionCount; i++)
                     {
                         if (Engine.Utility.CardUtility.符合选择条件(game.MyInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.MyInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                     }
                     for (int i = 0; i < game.YourInfo.BattleField.MinionCount; i++)
                     {
                         if (Engine.Utility.CardUtility.符合选择条件(game.YourInfo.BattleField.BattleMinions[i], SelectOption.EffectTargetSelectCondition))
                             game.YourInfo.BattleField.BattleMinions[i].能否成为动作对象 = true;
                     }
                     break;
             }
             break;
     }
 }
Example #13
0
 /// <summary>
 /// 运行效果
 /// </summary>
 /// <param name="singleEffect"></param>
 /// <param name="game"></param>
 /// <param name="Seed"></param>
 /// <returns></returns>
 public List<string> RunEffect(ActionStatus game, CardUtility.目标选择方向枚举 Direct)
 {
     List<string> Result = new List<string>();
     var MinionLst = 指定卡牌编号数组.Split(CardUtility.strSplitMark.ToCharArray());
     Random random = new Random(DateTime.Now.Millisecond);
     var CardSN = MinionLst[random.Next(0, MinionLst.Length)];
     var Minion = (MinionCard)CardUtility.GetCardInfoBySN(CardSN);
     switch (Direct)
     {
         case CardUtility.目标选择方向枚举.本方:
             if (game.AllRole.MyPublicInfo.BattleField.MinionCount < SystemManager.MaxMinionCount)
             {
                 game.AllRole.MyPublicInfo.BattleField.AppendToBattle(Minion);
                 //SUMMON#YOU#M000001#POS
                 Result.Add(Server.ActionCode.strSummon + CardUtility.strSplitMark + CardUtility.strMe +
                            CardUtility.strSplitMark + CardSN + CardUtility.strSplitMark + game.AllRole.MyPublicInfo.BattleField.MinionCount);
                 game.battleEvenetHandler.事件池.Add(new EventCard.全局事件()
                 {
                     触发事件类型 = EventCard.事件类型枚举.召唤,
                     触发位置 = Minion.战场位置
                 });
             }
             break;
         case CardUtility.目标选择方向枚举.对方:
             if (game.AllRole.YourPublicInfo.BattleField.MinionCount < SystemManager.MaxMinionCount)
             {
                 game.AllRole.YourPublicInfo.BattleField.AppendToBattle(Minion);
                 Result.Add(Server.ActionCode.strSummon + CardUtility.strSplitMark + CardUtility.strYou +
                     CardUtility.strSplitMark + CardSN + CardUtility.strSplitMark + game.AllRole.YourPublicInfo.BattleField.MinionCount);
                 game.battleEvenetHandler.事件池.Add(new EventCard.全局事件()
                 {
                     触发事件类型 = EventCard.事件类型枚举.召唤,
                     触发位置 = Minion.战场位置
                 });
             }
             break;
         case CardUtility.目标选择方向枚举.双方:
             if (game.AllRole.MyPublicInfo.BattleField.MinionCount < SystemManager.MaxMinionCount)
             {
                 game.AllRole.MyPublicInfo.BattleField.AppendToBattle(Minion);
                 //SUMMON#YOU#M000001#POS
                 Result.Add(Server.ActionCode.strSummon + CardUtility.strSplitMark + CardUtility.strMe +
                            CardUtility.strSplitMark + CardSN + CardUtility.strSplitMark + game.AllRole.MyPublicInfo.BattleField.MinionCount);
                 game.battleEvenetHandler.事件池.Add(new EventCard.全局事件()
                 {
                     触发事件类型 = EventCard.事件类型枚举.召唤,
                     触发位置 = Minion.战场位置
                 });
             }
             if (game.AllRole.MyPublicInfo.BattleField.MinionCount < SystemManager.MaxMinionCount)
             {
                 game.AllRole.MyPublicInfo.BattleField.AppendToBattle(Minion);
                 Result.Add(Server.ActionCode.strSummon + CardUtility.strSplitMark + CardUtility.strYou +
                     CardUtility.strSplitMark + CardSN + CardUtility.strSplitMark + game.AllRole.MyPublicInfo.BattleField.MinionCount);
                 game.battleEvenetHandler.事件池.Add(new EventCard.全局事件()
                 {
                     触发事件类型 = EventCard.事件类型枚举.召唤,
                     触发位置 = Minion.战场位置
                 });
             }
             break;
     }
     return Result;
 }