diff --git a/Assets/UdonSharp/Game Managers/GameManagerRound1.cs b/Assets/UdonSharp/Game Managers/GameManagerRound1.cs index 4ae3782..7d8f96e 100644 --- a/Assets/UdonSharp/Game Managers/GameManagerRound1.cs +++ b/Assets/UdonSharp/Game Managers/GameManagerRound1.cs @@ -1313,6 +1313,8 @@ public class GameManagerRound1 : GameManagerBase int DecodedPlayerNumber = 1000 - (ScoresList[i].Int % 1000); _FinalRoundPlayersSortedByScore[_FinalRoundPlayersSortedByScore.Length - i - 1] = DecodedPlayerNumber; } + + RequestSerialization(); } private void FinalRoundRevealPlayerPlace(int PlayerPlace) @@ -1372,13 +1374,11 @@ public class GameManagerRound1 : GameManagerBase HostCardBetweenRoundsInterface Interface = (HostCardBetweenRoundsInterface)GetHostCardInterface(RoundSegmentType.BetweenSegments); - PlayerPodium Number1Podium = _PlayerPodiums[_FinalRoundPlayersSortedByScore[0] - 1]; - PlayerPodium Number2Podium = _PlayerPodiums[_FinalRoundPlayersSortedByScore[1] - 1]; - PlayerPodium Number3Podium = _PlayerPodiums[_FinalRoundPlayersSortedByScore[2] - 1]; - - VRCPlayerApi Number1 = Networking.GetOwner(Number1Podium.gameObject); - VRCPlayerApi Number2 = Networking.GetOwner(Number2Podium.gameObject); - VRCPlayerApi Number3 = Networking.GetOwner(Number3Podium.gameObject); + PlayerPodium[] SortedPodiums = new PlayerPodium[_PlayerPodiums.Length]; + for (int i = 0; i < _PlayerPodiums.Length; i++) + { + SortedPodiums[i] = _PlayerPodiums[_FinalRoundPlayersSortedByScore[i] - 1]; + } bool TiebreakerNeeded = false; if (SortedPlayerScores[1] == SortedPlayerScores[2]) @@ -1386,17 +1386,17 @@ public class GameManagerRound1 : GameManagerBase if (SortedPlayerScores[0] == SortedPlayerScores[1]) { Interface.HeaderUI.text = "Three-Way Tie."; - Interface.CommentUI.text = "We'll start with a tiebreaker between " + Number2.displayName + " and " + Number3.displayName + "."; + Interface.CommentUI.text = "We'll start with a tiebreaker between " + SortedPodiums[1].PlayerName + " and " + SortedPodiums[2].PlayerName + "."; } else { - Interface.HeaderUI.text = Number1.displayName + " Wins"; + Interface.HeaderUI.text = SortedPodiums[0].PlayerName + " Wins"; Interface.CommentUI.text = - "- " + Number1.displayName + " will be moving on to the next round.\n" + - "- There is a tie for second place between " + Number2.displayName + " and " + Number3.displayName + ", so we will move on to a tiebreaker."; + "- " + SortedPodiums[0].PlayerName + " will be moving on to the next round.\n" + + "- There is a tie for second place between " + SortedPodiums[1].PlayerName + " and " + SortedPodiums[2].PlayerName + ", so we will move on to a tiebreaker."; } TiebreakerNeeded = true; - PrepareTiebreakerRound(Number2Podium.PlayerNumber, Number3Podium.PlayerNumber); + PrepareTiebreakerRound(SortedPodiums[1].PlayerNumber, SortedPodiums[2].PlayerNumber); _CameraControllerRound1.ActivateHostAllPlayersCameraSwitcher(); } @@ -1408,26 +1408,26 @@ public class GameManagerRound1 : GameManagerBase { Random.InitState(Networking.GetServerTimeInMilliseconds()); - VRCPlayerApi[] Randomiser = new VRCPlayerApi[2]; - Randomiser[0] = Number1; - Randomiser[1] = Number2; - int RandomIndex = Random.Range(0, 2); + string[] Randomiser = new string[2]; + Randomiser[0] = SortedPodiums[0].PlayerName; + Randomiser[1] = SortedPodiums[1].PlayerName; + int RandomIndex = Random.Range(0, Randomiser.Length); - WinningPlayers[0] = Randomiser[RandomIndex].displayName; - WinningPlayers[1] = Randomiser[(RandomIndex + 1) % 2].displayName; + WinningPlayers[0] = Randomiser[RandomIndex]; + WinningPlayers[1] = Randomiser[(RandomIndex + 1) % Randomiser.Length]; Interface.HeaderUI.text = "Tie For First"; Interface.CommentUI.text = - "- " + Number1.displayName + " and " + Number2.displayName + " are tied for first place.\n" + + "- " + SortedPodiums[0].PlayerName + " and " + SortedPodiums[1].PlayerName + " are tied for first place.\n" + "- Both will move on to the next round."; } else { - WinningPlayers[0] = Number1.displayName; - WinningPlayers[1] = Number2.displayName; + WinningPlayers[0] = SortedPodiums[0].PlayerName; + WinningPlayers[1] = SortedPodiums[1].PlayerName; Interface.HeaderUI.text = "Winners"; - Interface.CommentUI.text = Number1.displayName + " and " + Number2.displayName + " will move on to the next round."; + Interface.CommentUI.text = SortedPodiums[0].PlayerName + " and " + SortedPodiums[1].PlayerName + " will move on to the next round."; } _CaseManager.SetCurrentWinningPlayers(WinningPlayers);