class ScoreboardExtRepInfo extends ReplicationInfo; var public array PlayerInfos; var public array PlayerGroups; var public string SystemAdminRank; var public ColorRGB SystemAdminColor; var public Fields SystemAdminApplyColorToFields; var public string SystemPlayerRank; var public ColorRGB SystemPlayerColor; var public Fields SystemPlayerApplyColorToFields; var private bool SystemFinished, GroupsFinished, InfosFinished; var private int InfosReplicateProgress, GroupsReplicateProgress; var private KFScoreBoard SC; public final function ClientStartReplication() { GetScoreboard(); ClientInitSystem( SystemAdminRank, SystemAdminColor, SystemAdminApplyColorToFields, SystemPlayerRank, SystemPlayerColor, SystemPlayerApplyColorToFields); SetTimer(0.01f, true, nameof(ClientReplicateGroups)); SetTimer(0.01f, true, nameof(ClientReplicateInfos)); } public final function ClientReplicateGroups() { if (GroupsReplicateProgress < PlayerGroups.Length) { ClientAddPlayerGroup(PlayerGroups[GroupsReplicateProgress]); ++GroupsReplicateProgress; } else { ClearTimer(nameof(ClientReplicateGroups)); GroupReplicationFinished(); } } public final function ClientReplicateInfos() { if (InfosReplicateProgress < PlayerInfos.Length) { ClientAddPlayerInfo(PlayerInfos[InfosReplicateProgress]); ++InfosReplicateProgress; } else { ClearTimer(nameof(ClientReplicateInfos)); InfosReplicationFinished(); } } private reliable client final function GetScoreboard() { if (SC != None) { ClearTimer(nameof(GetScoreboard)); return; } SC = ScoreboardExtHUD(GetALocalPlayerController().myHUD).Scoreboard; SetTimer(0.1f, false, nameof(GetScoreboard)); } private reliable client final function ClientAddPlayerGroup(PlayerGroupEntry Group) { PlayerGroups.AddItem(Group); } private reliable client final function ClientAddPlayerInfo(UIDInfoEntry PlayerInfo) { PlayerInfos.AddItem(PlayerInfo); } private reliable client final function GroupReplicationFinished() { GroupsFinished = true; ClientGroupsApply(); } private reliable client final function InfosReplicationFinished() { InfosFinished = true; ClientInfosApply(); } private reliable client final function ClientInitSystem( string _SystemAdminRank, ColorRGB _SystemAdminColor, Fields _SystemAdminApplyColorToFields, string _SystemPlayerRank, ColorRGB _SystemPlayerColor, Fields _SystemPlayerApplyColorToFields) { SystemAdminRank = _SystemAdminRank; SystemAdminColor = _SystemAdminColor; SystemAdminApplyColorToFields = _SystemAdminApplyColorToFields; SystemPlayerRank = _SystemPlayerRank; SystemPlayerColor = _SystemPlayerColor; SystemPlayerApplyColorToFields = _SystemPlayerApplyColorToFields; ClientSystemApply(); } private reliable client final function ClientSystemApply() { if (SC == None) { SetTimer(0.1f, false, nameof(ClientSystemApply)); return; } SC.SystemAdminRank = SystemAdminRank; SC.SystemAdminColor = SystemAdminColor; SC.SystemAdminApplyColorToFields = SystemAdminApplyColorToFields; SC.SystemPlayerRank = SystemPlayerRank; SC.SystemPlayerColor = SystemPlayerColor; SC.SystemPlayerApplyColorToFields = SystemPlayerApplyColorToFields; SystemFinished = true; Finished(); } private reliable client final function ClientGroupsApply() { if (SC == None) { SetTimer(0.1f, false, nameof(ClientGroupsApply)); return; } SC.PlayerGroups = PlayerGroups; GroupsFinished = true; Finished(); } private reliable client final function ClientInfosApply() { if (SC == None) { SetTimer(0.1f, false, nameof(ClientInfosApply)); return; } SC.PlayerInfos = PlayerInfos; GroupsFinished = true; Finished(); } private reliable client final function Finished() { if (SystemFinished && GroupsFinished && InfosFinished) Destroy(); } defaultproperties { InfosReplicateProgress=0 GroupsReplicateProgress=0 SystemFinished=false GroupsFinished=false InfosFinished=false }