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