Exemplo n.º 1
0
        /// <summary>
        /// 战斗的位置选择器
        /// </summary>
        /// <returns></returns>
        public static CardUtility.位置选择用参数结构体 GetFightSelectOpt()
        {
            var SelectOpt = new CardUtility.位置选择用参数结构体();

            SelectOpt.EffectTargetSelectDirect = CardUtility.目标选择方向枚举.对方;
            SelectOpt.EffectTargetSelectRole   = CardUtility.目标选择角色枚举.所有角色;
            SelectOpt.CanNotSelectPos.位置       = BattleFieldInfo.UnknowPos;
            SelectOpt.嘲讽限制 = true;
            return(SelectOpt);
        }
Exemplo n.º 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;
 }
Exemplo n.º 3
0
 /// <summary>
 /// 战斗的位置选择器
 /// </summary>
 /// <returns></returns>
 public static CardUtility.位置选择用参数结构体 GetFightSelectOpt()
 {
     var SelectOpt = new CardUtility.位置选择用参数结构体();
     SelectOpt.EffectTargetSelectDirect = CardUtility.目标选择方向枚举.对方;
     SelectOpt.EffectTargetSelectRole = CardUtility.目标选择角色枚举.所有角色;
     SelectOpt.CanNotSelectPos.位置 = BattleFieldInfo.UnknowPos;
     SelectOpt.嘲讽限制 = true;
     return SelectOpt;
 }
Exemplo n.º 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);
        }
Exemplo n.º 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;
                    }
                }
            }
        }