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; }