public static async Task SelectBoardCard(List <Card> cards, CardBoardMode Mode = CardBoardMode.Select, int num = 1) { if (Mode == GameEnum.CardBoardMode.Select) { await Command.StateCommand.WaitForSelectBoardCard(cards, isMyTurn?CardBoardMode.Select : CardBoardMode.ShowOnly, num); } else { await Command.StateCommand.WaitForSelectBoardCard(cards, Mode, num); } }
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; }