Beispiel #1
0
        public static async Task WaitForSelectBoardCard <T>(List <T> CardIds, GameEnum.CardBoardMode Mode = GameEnum.CardBoardMode.Select, int num = 1)
        {
            GlobalBattleInfo.SelectBoardCardIds       = new List <int>();
            GlobalBattleInfo.IsWaitForSelectBoardCard = true;
            UiCommand.SetCardBoardShow();
            //Debug.Log("打开面板");
            if (typeof(T) == typeof(Card))
            {
                CardBoardCommand.LoadCardList(CardIds.Cast <Card>().ToList());
            }
            else
            {
                CardBoardCommand.LoadCardList(CardIds.Cast <int>().ToList());
            }
            Debug.Log("启动");

            await Task.Run(async() =>
            {
                switch (Mode)
                {
                case GameEnum.CardBoardMode.Select:
                    while (GlobalBattleInfo.SelectBoardCardIds.Count < Mathf.Min(CardIds.Count, num) && !GlobalBattleInfo.IsFinishSelectBoardCard)
                    {
                    }
                    break;

                case GameEnum.CardBoardMode.ChangeCard:
                    while (Info.GlobalBattleInfo.ExChangeableCardNum != 0 && !Info.GlobalBattleInfo.IsSelectCardOver)
                    {
                        if (Info.GlobalBattleInfo.SelectBoardCardIds.Count > 0)
                        {
                            await CardCommand.ExchangeCard();
                            Info.GlobalBattleInfo.ExChangeableCardNum--;
                            Info.GlobalBattleInfo.SelectBoardCardIds.Clear();
                            UiCommand.SetCardBoardTitle("剩余抽卡次数为" + Info.GlobalBattleInfo.ExChangeableCardNum);
                            //Debug.Log("选择了卡牌" + Info.GlobalBattleInfo.SelectBoardCardIds[0]);
                            //Debug.Log("剩余抽卡次数为" + Info.GlobalBattleInfo.ChangeableCardNum);
                        }
                    }
                    break;

                case GameEnum.CardBoardMode.ShowOnly:
                    break;

                default:
                    break;
                }
            });

            Debug.Log("关闭");
            UiCommand.SetCardBoardHide();
            GlobalBattleInfo.IsWaitForSelectBoardCard = false;
        }
        public static async Task WaitForSelectBoardCard <T>(List <T> CardIds, CardBoardMode Mode = CardBoardMode.Select, int num = 1)
        {
            AgainstInfo.selectBoardCardRanks    = new List <int>();
            AgainstInfo.IsFinishSelectBoardCard = false;
            AgainstInfo.cardBoardMode           = Mode;
            GameUI.UiCommand.SetCardBoardShow();
            if (typeof(T) == typeof(Card))
            {
                GameUI.CardBoardCommand.LoadBoardCardList(CardIds.Cast <Card>().ToList());
            }
            else
            {
                GameUI.CardBoardCommand.LoadBoardCardList(CardIds.Cast <int>().ToList());
            }
            //Debug.Log("进入选择模式");
            await Task.Run(async() =>
            {
                switch (Mode)
                {
                case CardBoardMode.Select:
                    while (AgainstInfo.selectBoardCardRanks.Count < Mathf.Min(CardIds.Count, num) && !AgainstInfo.IsFinishSelectBoardCard)
                    {
                    }
                    GameUI.UiCommand.SetCardBoardHide();
                    break;

                case CardBoardMode.ExchangeCard:
                    {
                        AiCommand.RoundStartExchange(false);
                        while (Info.AgainstInfo.ExChangeableCardNum != 0 && !Info.AgainstInfo.IsSelectCardOver)
                        {
                            StateInfo.TaskManager.Token.ThrowIfCancellationRequested();
                            if (Info.AgainstInfo.selectBoardCardRanks.Count > 0)
                            {
                                //List<Card> CardLists = CardIds.Cast<Card>().ToList();
                                List <Card> CardLists = AgainstInfo.cardSet[Orientation.Down][RegionTypes.Hand].CardList;
                                await CardCommand.ExchangeCard(CardLists[AgainstInfo.selectBoardCardRanks[0]], isRoundStartExchange: true);
                                Info.AgainstInfo.ExChangeableCardNum--;
                                Info.AgainstInfo.selectBoardCardRanks.Clear();
                                GameUI.UiCommand.SetCardBoardTitle("剩余抽卡次数为" + Info.AgainstInfo.ExChangeableCardNum);
                            }
                        }
                        if (AgainstInfo.isPlayer1)
                        {
                            AgainstInfo.isPlayer1RoundStartExchangeOver = true;
                        }
                        else
                        {
                            AgainstInfo.isPlayer2RoundStartExchangeOver = true;
                        }
                        GameUI.UiCommand.SetCardBoardHide();
                        Network.NetCommand.AsyncInfo(NetAcyncType.RoundStartExchangeOver);
                        while (!(AgainstInfo.isPlayer1RoundStartExchangeOver && AgainstInfo.isPlayer2RoundStartExchangeOver))
                        {
                            StateInfo.TaskManager.Token.ThrowIfCancellationRequested();
                            Debug.Log("等待双方选择完毕");
                            Debug.Log("等待双方选择完毕" + AgainstInfo.isPlayer1RoundStartExchangeOver + ":" + AgainstInfo.isPlayer2RoundStartExchangeOver);
                            await Task.Delay(1000);
                        }
                        AgainstInfo.isPlayer1RoundStartExchangeOver = false;
                        AgainstInfo.isPlayer2RoundStartExchangeOver = false;
                        AgainstInfo.IsSelectCardOver = false;
                        break;
                    }

                case CardBoardMode.ShowOnly:
                    while (AgainstInfo.selectBoardCardRanks.Count < Mathf.Min(CardIds.Count, num) && !AgainstInfo.IsFinishSelectBoardCard)
                    {
                    }
                    GameUI.UiCommand.SetCardBoardHide();
                    break;

                default:
                    break;
                }
            });

            AgainstInfo.cardBoardMode = CardBoardMode.None;
        }