Example #1
0
        public static async Task RoundStart(int num)
        {
            await Task.Run(async() =>
            {
                GlobalBattleInfo.IsPlayer1Pass = false;
                GlobalBattleInfo.IsPlayer2Pass = false;
                UiCommand.ReSetPassState();
                UiCommand.SetNoticeBoardTitle($"第{num + 1}小局开始");
                UiCommand.NoticeBoardShow();
                await Task.Delay(2000);
                UiCommand.NoticeBoardHide();
                switch (num)
                {
                case (0):
                    {
                        Info.GlobalBattleInfo.ExChangeableCardNum += 3;
                        Info.UiInfo.CardBoardTitle = "剩余抽卡次数为" + Info.GlobalBattleInfo.ExChangeableCardNum;
                        for (int i = 0; i < 10; i++)
                        {
                            await CardCommand.DrawCard();
                        }
                        for (int i = 0; i < 5; i++)
                        {
                            await CardCommand.DrawCard(false);
                        }
                        break;
                    }

                case (1):
                    {
                        Info.GlobalBattleInfo.ExChangeableCardNum += 1;
                        Info.UiInfo.CardBoardTitle = "剩余抽卡次数为" + Info.GlobalBattleInfo.ExChangeableCardNum;
                        await CardCommand.DrawCard();
                        await CardCommand.DrawCard(false);
                        break;
                    }

                case (2):
                    {
                        Info.GlobalBattleInfo.ExChangeableCardNum += 1;
                        Info.UiInfo.CardBoardTitle = "剩余抽卡次数为" + Info.GlobalBattleInfo.ExChangeableCardNum;
                        await CardCommand.DrawCard();
                        await CardCommand.DrawCard(false);
                        break;
                    }

                default:
                    break;
                }
                await Task.Delay(2500);
                await WaitForSelectBoardCard(Info.RowsInfo.GetDownCardList(RegionTypes.Hand), GameEnum.CardBoardMode.ChangeCard);;

                //while (Info.GlobalBattleInfo.ChangeableCardNum != 0 && !Info.GlobalBattleInfo.IsSelectCardOver)
                //{
                //    await WaitForSelectBoardCard(Info.RowsInfo.GetDownCardList(RegionTypes.Hand), GameEnum.CardBoardMode.ChangeCard); ;
                //    Debug.Log("选择了卡牌" + Info.GlobalBattleInfo.SelectBoardCardIds[0]);
                //    Debug.Log("抽卡次数为" + Info.GlobalBattleInfo.ChangeableCardNum);
                //}
            });
        }
        public static async Task CreatTempCard(SingleRowInfo SingleInfo)
        {
            Card modelCard = AgainstInfo.cardSet[Orientation.My][RegionTypes.Uesd].CardList[0];

            SingleInfo.TempCard = await CardCommand.CreatCard(modelCard.CardId);

            SingleInfo.TempCard.isGray = true;
            SingleInfo.TempCard.SetCardSeeAble(true);
            SingleInfo.ThisRowCards.Insert(SingleInfo.Location, SingleInfo.TempCard);
            SingleInfo.TempCard.Init();
        }
 //临时的ai操作
 public static async Task TempOperationDiscard()
 {
     if (Info.AgainstInfo.isDownPass || Info.AgainstInfo.isUpPass)
     {
         Command.GameUI.UiCommand.SetCurrentPass();
     }
     else
     {
         await CardCommand.DisCard(Info.AgainstInfo.cardSet[Orientation.My][RegionTypes.Hand].CardList[0]);
     }
 }
Example #4
0
 /// <summary>
 /// 临时的ai操作
 /// </summary>
 /// <returns></returns>
 public static async Task TempOperationAsync()
 {
     if (Info.GlobalBattleInfo.IsPlayer1Pass || Info.GlobalBattleInfo.IsPlayer2Pass)
     {
         UiCommand.SetCurrentPass();
     }
     else
     {
         await CardCommand.DisCard(Info.RowsInfo.GetMyCardList(RegionTypes.Hand)[0]);
     }
 }
Example #5
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 RoundStart(int num)
        {
            await Task.Run(async() =>
            {
                GameUI.UiCommand.ReSetPassState();
                GameUI.UiCommand.SetNoticeBoardTitle($"第{num + 1}小局开始");
                await GameUI.UiCommand.NoticeBoardShow();
                //await Task.Delay(2000);
                switch (num)
                {
                case (0):
                    {
                        Info.AgainstInfo.ExChangeableCardNum = 3;
                        Info.GameUI.UiInfo.CardBoardTitle    = "剩余抽卡次数为".TransUiText() + Info.AgainstInfo.ExChangeableCardNum;
                        for (int i = 0; i < 10; i++)
                        {
                            await CardCommand.DrawCard(IsPlayerDraw: true, isOrder: false);
                        }
                        for (int i = 0; i < 10; i++)
                        {
                            await CardCommand.DrawCard(IsPlayerDraw: false, isOrder: false);
                        }
                        CardCommand.OrderCard();
                        break;
                    }

                case (1):
                    {
                        Info.AgainstInfo.ExChangeableCardNum += 1;
                        Info.GameUI.UiInfo.CardBoardTitle     = "剩余抽卡次数为" + Info.AgainstInfo.ExChangeableCardNum;
                        await CardCommand.DrawCard();
                        await CardCommand.DrawCard(false);
                        break;
                    }

                case (2):
                    {
                        Info.AgainstInfo.ExChangeableCardNum += 1;
                        Info.GameUI.UiInfo.CardBoardTitle     = "剩余抽卡次数为" + Info.AgainstInfo.ExChangeableCardNum;
                        await CardCommand.DrawCard();
                        await CardCommand.DrawCard(false);
                        break;
                    }

                default:
                    break;
                }
                await Task.Delay(2500);
                AgainstInfo.isRoundStartExchange = true;
                await WaitForSelectBoardCard(AgainstInfo.cardSet[Orientation.Down][RegionTypes.Hand].CardList, CardBoardMode.ExchangeCard);
                AgainstInfo.isRoundStartExchange = false;
            });
        }
Example #7
0
        //static int num = 0;
        public static async Task BattleStart()
        {
            await Task.Run(async() =>
            {
                //await Task.Delay(500);
                UiCommand.SetNoticeBoardTitle("对战开始");
                UiCommand.NoticeBoardShow();
                await Task.Delay(2000);
                UiCommand.NoticeBoardHide();

                CardDeck Deck = AllPlayerInfo.Player1Info.UseDeck;

                for (int i = 0; i < Deck.CardIds.Count; i++)
                {
                    //print("我方创造卡片");
                    Card NewCard = await CardCommand.CreatCard(Deck.CardIds[i]);
                    if (GlobalBattleInfo.IsPlayer1)
                    {
                        RowsInfo.GetDownCardList(RegionTypes.Deck).Add(NewCard);
                    }
                    else
                    {
                        RowsInfo.GetUpCardList(RegionTypes.Deck).Add(NewCard);
                    }
                    //NewCard.Init();
                }
                Deck = AllPlayerInfo.Player2Info.UseDeck;
                for (int i = 0; i < Deck.CardIds.Count; i++)
                {
                    //print("敌方创造卡片");
                    Card NewCard = await CardCommand.CreatCard(Deck.CardIds[i]);
                    if (GlobalBattleInfo.IsPlayer1)
                    {
                        RowsInfo.GetUpCardList(RegionTypes.Deck).Add(NewCard);
                    }
                    else
                    {
                        RowsInfo.GetDownCardList(RegionTypes.Deck).Add(NewCard);
                    }
                }
                await Task.Delay(2000);
            });

            //print("结束对战准备");
        }
        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;
        }
        public static async Task BattleStart()
        {
            AgainstInfo.isMyTurn       = AgainstInfo.isPlayer1;
            AgainstInfo.cardSet        = new CardSet();
            Info.StateInfo.TaskManager = new System.Threading.CancellationTokenSource();
            MainThread.Run(() =>
            {
                foreach (var item in GameObject.FindGameObjectsWithTag("SingleInfo"))
                {
                    SingleRowInfo singleRowInfo = item.GetComponent <SingleRowInfo>();
                    AgainstInfo.cardSet.singleRowInfos.Add(singleRowInfo);
                }
                AgainstInfo.cardSet.CardList = null;
            });
            await Task.Delay(500);

            if (AgainstInfo.isPVE)
            {
                AllPlayerInfo.UserInfo = new NetInfoModel.PlayerInfo(
                    "gezi", "yaya",
                    new List <CardDeck>
                {
                    new CardDeck("gezi", 10001, new List <int>
                    {
                        //10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,
                        10015, 10016, 10012, 10013, 10014, 10015, 10016, 10002, 10008, 10004, 10005, 10007, 10006, 10008, 10004, 10012, 10010, 10011, 10012, 10014, 10007, 10006, 10016, 10008, 10014
                        //10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, 10016, 10012, 10013, 10014, 10015, 10016, 10012, 10013, 10014, 10015, 10016
                        //1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004, 1004
                    })
                });
                AllPlayerInfo.OpponentInfo = new NetInfoModel.PlayerInfo(
                    "gezi", "yaya",
                    new List <CardDeck>
                {
                    new CardDeck("gezi", 10001, new List <int>
                    {
                        //10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,10002,
                        10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, 10016, 10012, 10013, 10014, 10015, 10016, 10012, 10013, 10014, 10015, 10016
                        //10002, 10003, 10004, 10005, 10006, 10007, 10008, 10009, 10010, 10011, 10012, 10013, 10014, 10015, 10016, 10012, 10013, 10014, 10015, 10016, 10012, 10013, 10014, 10015, 10016
                    })
                });
            }
            RowCommand.SetRegionSelectable(RegionTypes.None);
            //Debug.LogError("初始双方信息");
            await Task.Run(async() =>
            {
                try
                {
                    //await Task.Delay(500);
                    Debug.Log("对战开始".TransUiText());
                    GameUI.UiCommand.SetNoticeBoardTitle("对战开始".TransUiText());
                    await GameUI.UiCommand.NoticeBoardShow();
                    //初始化我方领袖卡
                    Card MyLeaderCard = await CardCommand.CreatCard(AllPlayerInfo.UserInfo.UseDeck.LeaderId);
                    AgainstInfo.cardSet[Orientation.Down][RegionTypes.Leader].Add(MyLeaderCard);
                    MyLeaderCard.SetCardSeeAble(true);
                    //初始化敌方领袖卡
                    Card OpLeaderCard = await CardCommand.CreatCard(AllPlayerInfo.OpponentInfo.UseDeck.LeaderId);
                    AgainstInfo.cardSet[Orientation.Up][RegionTypes.Leader].Add(OpLeaderCard);
                    OpLeaderCard.SetCardSeeAble(true);
                    //初始双方化牌组
                    CardDeck Deck = AllPlayerInfo.UserInfo.UseDeck;
                    //Debug.LogError("初始双方化牌组");

                    for (int i = 0; i < Deck.CardIds.Count; i++)
                    {
                        Card NewCard    = await CardCommand.CreatCard(Deck.CardIds[i]);
                        CardSet cardSet = AgainstInfo.cardSet[Orientation.Down][RegionTypes.Deck];
                        cardSet.Add(NewCard);
                    }
                    Deck = AllPlayerInfo.OpponentInfo.UseDeck;

                    for (int i = 0; i < Deck.CardIds.Count; i++)
                    {
                        Card NewCard = await CardCommand.CreatCard(Deck.CardIds[i]);
                        AgainstInfo.cardSet[Orientation.Up][RegionTypes.Deck].Add(NewCard);
                    }
                    await Task.Delay(000);
                }
                catch (Exception e)
                {
                    Debug.LogError(e);
                }
            });
        }