Exemplo n.º 1
0
    public void GameInit()
    {
        curCoroutine = null;
        IsTestMode   = false;
        createPos.SetActive(false);

        ChracterList.Clear();
        PlayerDataList.Clear();
        PlayerSequenceQueue.Clear();

        IsGameEnd = false;
        CurRound  = 1;

        Player1 = new PlayerData(0, 0, Team.PLAYER1, DeckManager.Instance.CurDeck);
        Player2 = new PlayerData(1, 1, Team.PLAYER2, DeckManager.Instance.CurDeck);

        PlayerDataList.Add(Player1);
        PlayerDataList.Add(Player2);

        PlayerDataList.Sort((x, y) =>
        {
            return(x.order.CompareTo(y.order));
        });

        foreach (var player in PlayerDataList)
        {
            EnqueuePlayerSequenceQueue(player);
        }

        NextSequencePlayerStart();
    }
Exemplo n.º 2
0
    public void GetScore(Team team, int score)
    {
        if (IsTestMode)
        {
            return;
        }

        var findPlayer = PlayerDataList.Find(v => v.team == team);

        findPlayer?.GetScore(score);

        //전 라운드의 후공 플레이어
        var pevLastPlayer = PlayerDataList
                            .Find(v => v.order == (PlayerDataList.Count - 1));

        var firstTeam = Team.NONE;
        var winTeam   = Team.NONE;

        //후공 플레이어가 점수를 획득했다면
        if (findPlayer != null &&
            pevLastPlayer.index == findPlayer.index)
        {
            //역순으로 정렬
            PlayerDataList.Sort((x, y) =>
            {
                return(y.order.CompareTo(x.order));
            });

            firstTeam = PlayerDataList.First().team;

            //전 라운드 순서의 역순으로 인큐
            for (int i = 0; i < PlayerDataList.Count; i++)
            {
                PlayerDataList[i].order = i;
                PlayerDataList[i].UseIndexList.Clear();
                EnqueuePlayerSequenceQueue(PlayerDataList[i]);
            }
        }
        //후공 플레이어가 점수를 획득하지 못했다면
        else
        {
            //전판 순서 그대로 정렬
            PlayerDataList.Sort((x, y) =>
            {
                return(x.order.CompareTo(y.order));
            });

            firstTeam = PlayerDataList.First().team;

            //전 라운드 순서로 인큐
            for (int i = 0; i < PlayerDataList.Count; i++)
            {
                PlayerDataList[i].order = i;
                PlayerDataList[i].UseIndexList.Clear();
                EnqueuePlayerSequenceQueue(PlayerDataList[i]);
            }
        }

        SetCameraToHousePos();

        CurRound += 1;
        if (CurRound > ROUND_COUNT)
        {
            //게임 종료
            IsGameEnd = true;

            winTeam = Player1.Score > Player2.Score ? Team.PLAYER1 : Team.PLAYER2;

            curCoroutine = StartCoroutine(NextRoundWait(
                                              (scoreUI) => scoreUI.SetWinLoseRoot(winTeam == Player1.team),
                                              () =>
            {
                RemoveAllData();
                None();

                var selectUI = UIManager.Instance.IsUIOpened <GameMainUI>();
                if (selectUI != null)
                {
                    selectUI.Close();
                }

                UIManager.Instance.Get <MainMenuUI>();

                curCoroutine = null;
            }));
        }
        else
        {
            curCoroutine = StartCoroutine(NextRoundWait(
                                              (scoreUI) => scoreUI.SetFirstAttackRoot(firstTeam == Player1.team),
                                              () =>
            {
                RemoveAllData();
                NextSequencePlayerStart();

                curCoroutine = null;
            }));
        }
    }