Reduce the number of dossard color updates for performance

This commit is contained in:
Beu 2022-05-20 12:06:09 +02:00
parent 5d4dfcb4d9
commit 27a962042b

View File

@ -174,6 +174,9 @@ declare Integer Last_NumberOfPlayers;
declare Text Last_EliminatedPlayersNbRanks; declare Text Last_EliminatedPlayersNbRanks;
declare K_LapState[Integer] MatchState; declare K_LapState[Integer] MatchState;
declare Integer Last_CooldownDossardUpdate = -1;
declare Boolean Last_InCooldownDossardUpdate = False;
Race::SetLapsSettings(True, -1); // force infinite lap Race::SetLapsSettings(True, -1); // force infinite lap
*** ***
@ -235,6 +238,9 @@ foreach (Player in Players) {
Player.Dossard_Color = <1., 1., 1.>; Player.Dossard_Color = <1., 1., 1.>;
} }
Last_CooldownDossardUpdate = -1;
Last_InCooldownDossardUpdate = False;
if (Last_NbLapsWithoutKO == 1) { if (Last_NbLapsWithoutKO == 1) {
UIManager.UIAll.SendChat(Last_NbLapsWithoutKO ^ " lap without eliminations"); UIManager.UIAll.SendChat(Last_NbLapsWithoutKO ^ " lap without eliminations");
} else if (Last_NbLapsWithoutKO > 1){ } else if (Last_NbLapsWithoutKO > 1){
@ -287,8 +293,14 @@ foreach (Event in RacePendingEvents) {
Scores::UpdatePlayerBestRace(Event.Player); Scores::UpdatePlayerBestRace(Event.Player);
CarRank::ThrottleUpdate(CarRank::C_SortCriteria_BestRace); CarRank::ThrottleUpdate(CarRank::C_SortCriteria_BestRace);
if (Last_CooldownDossardUpdate == -1) {
UpdateDossardColors(MatchState);
Last_CooldownDossardUpdate = Now + 1000;
} else {
Last_InCooldownDossardUpdate = True;
}
} }
UpdateDossardColors(MatchState);
} }
} }
@ -298,6 +310,14 @@ foreach (Event in PendingEvents) {
Events::Invalid(Event); Events::Invalid(Event);
} }
if (Last_CooldownDossardUpdate != -1 && Now > Last_CooldownDossardUpdate) {
Last_CooldownDossardUpdate = -1;
if (Last_InCooldownDossardUpdate) {
Last_InCooldownDossardUpdate = False;
UpdateDossardColors(MatchState);
}
}
if (Last_NbLapsWithoutKO != S_NbLapsWithoutKO || Last_EliminatedPlayersNbRanks != S_EliminatedPlayersNbRanks) { if (Last_NbLapsWithoutKO != S_NbLapsWithoutKO || Last_EliminatedPlayersNbRanks != S_EliminatedPlayersNbRanks) {
Last_NbLapsWithoutKO = S_NbLapsWithoutKO; Last_NbLapsWithoutKO = S_NbLapsWithoutKO;
Last_EliminatedPlayersNbRanks = S_EliminatedPlayersNbRanks; Last_EliminatedPlayersNbRanks = S_EliminatedPlayersNbRanks;
@ -384,6 +404,7 @@ K_LapState[Integer] ComputeMatchState(Integer _NumberOfPlayers) {
* @return Void * @return Void
*/ */
Void UpdateDossardColors(K_LapState[Integer] _MatchState) { Void UpdateDossardColors(K_LapState[Integer] _MatchState) {
Log::Log("UpdateDossardColors");
declare Integer Rank = 1; declare Integer Rank = 1;
foreach (Score in Scores) { foreach (Score in Scores) {
@ -392,6 +413,7 @@ Void UpdateDossardColors(K_LapState[Integer] _MatchState) {
declare CSmPlayer Player = GetPlayer(Score.User.Login); declare CSmPlayer Player = GetPlayer(Score.User.Login);
if (Player == Null) continue; if (Player == Null) continue;
if (Player.SpawnStatus == CSmPlayer::ESpawnStatus::NotSpawned) continue;
declare Integer NbAlive; declare Integer NbAlive;
@ -422,6 +444,7 @@ Void UpdateDossardColors(K_LapState[Integer] _MatchState) {
Void EliminatePlayer(CSmPlayer _Player) { Void EliminatePlayer(CSmPlayer _Player) {
if (_Player == Null) return; if (_Player == Null) return;
if (_Player.SpawnStatus == CSmPlayer::ESpawnStatus::NotSpawned) return; if (_Player.SpawnStatus == CSmPlayer::ESpawnStatus::NotSpawned) return;
log("EliminatePlayer: " ^ _Player.User.Name ^ " (" ^ _Player.User.Login ^ ")");
Race::StopSkipOutro(_Player); Race::StopSkipOutro(_Player);
UIManager.UIAll.SendChat("Player $<$ff6" ^ _Player.User.Name ^ "$> is $<$f00eliminated$>"); UIManager.UIAll.SendChat("Player $<$ff6" ^ _Player.User.Name ^ "$> is $<$f00eliminated$>");
} }