Rewrote the end game player ranking code. Just needs to be tested.

This commit is contained in:
Jamie Greunbaum 2026-06-22 00:49:48 -04:00
parent 2691d9be22
commit f0d37d1a90

View File

@ -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);