Once I get that upgrade to 36-hour days, I will tackle that. – Mychaeel
Legacy:RegularEngine/ClassTrader
From Unreal Wiki, The Unreal Engine Documentation Site
MapTrader is a GUIPage to allow players to vote on which map will be next in the campaign. It basically talks to the GRI to determine the map lists, and the Legacy:RegularEngine/RegularPlayer to update the PRI to save the vote.
UT2K4GUIPage >> MapTrader
class MapTrader extends UT2K4GUIPage; var Automated GuiListBox TeamAMapList, TeamBMapList; var Automated GUIButton TeamAVote, TeamBVote; var Automated GUILabel TeamAName, TeamBName, CampaignWon; var RegularPlayer RgPlayer; function InitComponent(GUIController MyController, GUIComponent MyOwner) { Super.InitComponent(MyController, MyOwner); RgPlayer = RegularPlayer(PlayerOwner()); FillMapLists(); if(RgPlayer != none && RgPlayer.PlayerReplicationInfo != none) { if( RgPlayer.PlayerReplicationInfo.Team.TeamIndex == 0 ) { TeamAVote.bVisible = false; } if( RgPlayer.PlayerReplicationInfo.Team.TeamIndex == 1 ) { TeamBVote.bVisible = false; } } // txtAvailable.SetContent(pcAvailable.List.GetExtra()); } function FillMapLists() { local string TeamAString,TeamBString; local array<string> TeamAMaps,TeamBMaps; local RegularGRI RgGRI; local int i; TeamAMapList.List.Clear(); TeamBMapList.List.Clear(); if(RgPlayer != none && RgPlayer.GameReplicationInfo != none && RegularGRI(RgPlayer.GameReplicationInfo) != none) { RgGRI = RegularGRI(RgPlayer.GameReplicationInfo); for(i=0; i<RgGRI.MaxMapNumber; i++) { if(RgGRI.TeamAMaps[i].TeamIndex == 0 ) { TeamAString = TeamAString$"|"$RgGRI.TeamAMaps[i].MapName; } if(RgGRI.TeamAMaps[i].TeamIndex == 1 ) { TeamBString = TeamBString$"|"$RgGRI.TeamAMaps[i].MapName; } if(RgGRI.TeamBMaps[i].TeamIndex == 0 ) { TeamAString = TeamAString$"|"$RgGRI.TeamBMaps[i].MapName; } if(RgGRI.TeamBMaps[i].TeamIndex == 1 ) { TeamBString = TeamBString$"|"$RgGRI.TeamBMaps[i].MapName; } } } Split(TeamAString, "|", TeamAMaps); Split(TeamBString, "|", TeamBMaps); for(i=0; i<RgGRI.MaxMapNumber*2; i++) { if(i<TeamAMaps.Length) {TeamAMapList.List.Add(TeamAMaps[i],,TeamAMaps[i]);} if(i<TeamBMaps.Length) {TeamBMapList.List.Add(TeamBMaps[i],,TeamBMaps[i]);} } TeamAMapList.List.Index = -1; TeamBMapList.List.Index = -1; LOG("Humans have "$TeamAMaps.Length$" Maps"); if( TeamAMaps.Length == 1) { CampaignWon.Caption = "SKAARJ WIN THE CAMPAIGN"; TeamAVote.bVisible = false; TeamBVote.bVisible = false; } if( TeamBMaps.Length == 1) { CampaignWon.Caption = "HUMANS WIN THE CAMPAIGN"; TeamAVote.bVisible = false; TeamBVote.bVisible = false; } } function bool InternalOnClick(GUIComponent Sender) { if( Sender == TeamAVote ) { RgPlayer.SetChosenMap(TeamBMapList.List.Get()); } if( Sender == TeamBVote ) { RgPlayer.SetChosenMap(TeamBMapList.List.Get()); } Controller.CloseMenu(); return true; } function InternalOnChange(GUIComponent sender) { } defaultproperties { Begin Object Class=GUIListBox Name=TeamALST bVisibleWhenEmpty=True WinTop=0.1000000 WinLeft=0.200000 WinWidth=0.250000 WinHeight=0.45000 StyleName="IRCText" RenderWeight=1.5 OnChange=InternalOnChange End Object TeamAMapList=RegularEngine.MapTrader.TeamALST Begin Object Class=GUIListBox Name=TeamBLST bVisibleWhenEmpty=True WinTop=0.1000000 WinLeft=0.500000 WinWidth=0.250000 WinHeight=0.45000 StyleName="IRCText" RenderWeight=1.5 OnChange=InternalOnChange End Object TeamBMapList=RegularEngine.MapTrader.TeamBLST Begin Object Class=GUIButton Name=TeamABTN Caption="VOTE" WinTop=0.600000 WinLeft=0.20000 WinWidth=0.25000 OnClick=MapTrader.InternalOnClick RenderWeight=1.5 End Object TeamAVote=RegularEngine.MapTrader.TeamABTN Begin Object Class=GUIButton Name=TeamBBTN Caption="VOTE" WinTop=0.600000 WinLeft=0.50000 WinWidth=0.25000 OnClick=MapTrader.InternalOnClick RenderWeight=1.5 End Object TeamBVote=RegularEngine.MapTrader.TeamBBTN Begin Object Class=GUILabel Name=AName FontScale=FNS_Large TextFont="UT2LargeFont" StyleName="TextLabel" Caption="HUMAN MAPS" WinTop=0.00500000 WinLeft=0.2000000 WinHeight=0.185 RenderWeight=9.0 End Object TeamAName=RegularEngine.MapTrader.AName Begin Object Class=GUILabel Name=BName FontScale=FNS_Large TextFont="UT2LargeFont" StyleName="TextLabel" Caption="SKAARJ MAPS" WinTop=0.00500000 WinLeft=0.5000000 WinHeight=0.185 RenderWeight=9.0 End Object TeamBName=RegularEngine.MapTrader.BName Begin Object Class=GUILabel Name=Won FontScale=FNS_Large TextFont="UT2LargeFont" StyleName="TextLabel" Caption="" WinTop=0.600000 WinLeft=0.2000000 WinHeight=0.185 RenderWeight=9.0 End Object CampaignWon=RegularEngine.MapTrader.Won bAllowedAsLast=True bRenderWorld=True }