//----------------------------------------------------------- // //----------------------------------------------------------- class LobbyMenu extends UT2k4MainPage; var automated moCheckBox ReadyBox[6]; var automated KFPlayerReadyBar PlayerBox[6]; var automated GUIImage PlayerPerk[6]; var automated GUILabel PlayerVetLabel[6]; var automated KFLobbyChat t_ChatBox; //var automated KFLobbyTitleLabel l_TitleBar; var automated KFMapStoryLabel l_StoryBox; var automated AltSectionBackground StoryBoxBG; var automated KFBotComboBox BotSlot1; var automated KFAddBotButton AddBotButton; var automated KFRemoveBotButton RemoveBotButton; var automated KFRemoveAllBotButton TotallyRemoveBotsButton; var automated GUISectionBackground BotsBG; var automated AltSectionBackground GameInfoBG; var automated GUILabel CurrentMapLabel; var automated GUILabel DifficultyLabel; var automated GUIImage WaveBG; var automated GUILabel WaveLabel; // Localized Strings var localized string CurrentMapString; var localized string DifficultyString; var localized string LvAbbrString; var automated GUILabel label_TimeOutCounter; var automated GUILabel PerkClickLabel; var bool bStoryBoxFilled; var bool bAllowClose; //Perks/Profile var() string sChar, sCharD; var() int nFOV; var() xUtil.PlayerRecord PlayerRec; var automated GUISectionBackground i_BGPerks; var automated GUISectionBackground i_BGPerk; var automated GUISectionBackground i_BGPerkEffects; var automated GUIScrollTextBox lb_PerkEffects; var automated GUIImage i_Portrait; var automated GUISectionBackground PlayerPortraitBG; var float IconBorder; // Percent of Height to leave blank inside Icon Background var float ItemBorder; // Percent of Height to leave blank inside Item Background var float ItemSpacing; // Number of Pixels between Items var float ProgressBarHeight; // Percent of Height to make Progress Bar's Height var float TextTopOffset; // Percent of Height to off Progress String from top of Progress Bar(typically negative) var float IconToInfoSpacing; // Percent of Width to offset Info from right side of Icon var texture ItemBackground; var texture ProgressBarBackground; var texture ProgressBarForeground; var texture PerkBackground; var texture InfoBackground; //var bool bAdminUse; // If you're not an admin, gtfo! var int ActivateTimeoutTime; // When was the lobby timeout turned on? var bool bTimeoutTimeLogged; // Was it already logged once? var bool bTimedOut; // Have we timed out out successfully? var localized string WaitingForServerStatus; var localized string WaitingForOtherPlayers; var localized string AutoCommence; var localized string BeginnerString; var localized string NormalString; var localized string HardString; var localized string SuicidalString; var localized string HellOnEarthString; var bool bShouldUpdateVeterancy; var() localized string SelectPerkInformationString; var() localized string PerksDisabledString; var class CurrentVeterancy; var int CurrentVeterancyLevel; var float VideoTimer; var bool VideoOpened; var bool VideoPlayed; var automated GUISectionBackground ADBackground; var LobbyMenuAd LobbyMenuAd; const MAX_MOVIES = 6; function InitComponent(GUIController MyC, GUIComponent MyO) { local int i; Super.InitComponent(MyC, MyO); LobbyMenuAd = new class'LobbyMenuAd'; LobbyMenuAd.MenuMovie = new class'Movie'; LobbyMenuAd.MenuMovie.Callbacks = LobbyMenuAd; for ( i = 0; i < 6; i++ ) { PlayerPerk[i].WinWidth = PlayerPerk[i].ActualHeight(); PlayerPerk[i].WinLeft += ((PlayerBox[i].ActualHeight() - PlayerPerk[i].ActualHeight()) / 2) / MyC.ResX; } i_Portrait.WinTop = PlayerPortraitBG.ActualTop() + 30; i_Portrait.WinHeight = PlayerPortraitBG.ActualHeight() - 36; t_ChatBox.FocusInstead = PerkClickLabel; } function CheckBotButtonAccess() { if ( KFGameReplicationInfo(PlayerOwner().GameReplicationInfo) == none ) { return; } // log(PlayerOwner().GameReplicationInfo.GameClass); // Dont show Invasion bots, on Story mode. // Check the GRI, on dedicated servers // Level.Game seems to work on listens. if ( true || PlayerOwner().GameReplicationInfo.GameClass == "KFMod.KFSPGameType" || PlayerOwner().Level.NetMode == NM_ListenServer && KFSPGameType(PlayerOwner().Level.Game) != none ) { BotSlot1.Hide(); AddBotButton.Hide(); RemoveBotButton.Hide(); TotallyRemoveBotsButton.Hide(); BotsBG.Hide(); } /* else { BotSlot1.Show(); AddBotButton.Show(); RemoveBotButton.Show(); TotallyRemoveBotsButton.Show(); BotsBG.Show(); } if ( !PlayerOwner().PlayerReplicationInfo.bAdmin && PlayerOwner().Level.NetMode != NM_StandAlone ) { BotSlot1.DisableMe(); AddBotButton.DisableMe(); RemoveBotButton.DisableMe(); TotallyRemoveBotsButton.DisableMe(); BotsBG.DisableMe(); } if ( PlayerOwner().PlayerReplicationInfo.bAdmin || PlayerOwner().Level.NetMode == NM_ListenServer ) { if ( KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).bNoBots ) { BotSlot1.DisableMe(); AddBotButton.DisableMe(); RemoveBotButton.DisableMe(); TotallyRemoveBotsButton.DisableMe(); BotsBG.DisableMe(); } else { BotSlot1.EnableMe(); AddBotButton.EnableMe(); RemoveBotButton.EnableMe(); BotsBG.EnableMe(); TotallyRemoveBotsButton.EnableMe(); } if ( PlayerOwner().GameReplicationInfo.PRIArray.length + KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).PendingBots < 6 ) { AddBotButton.EnableMe(); } else { AddBotButton.DisableMe(); } if ( KFGameReplicationInfo(PlayerOwner().GameReplicationInfo).PendingBots > 0 ) { RemoveBotButton.EnableMe(); TotallyRemoveBotsButton.EnableMe(); } else { RemoveBotButton.DisableMe(); TotallyRemoveBotsButton.DisableMe(); } }*/ } function bool InternalOnKeyEvent(out byte Key, out byte State, float delta) { local int i; local bool bVoiceChatKey; local array BindKeyNames, LocalizedBindKeyNames; Controller.GetAssignedKeys( "VoiceTalk", BindKeyNames, LocalizedBindKeyNames ); for ( i = 0; i < BindKeyNames.Length; i++ ) { if ( Mid( GetEnum(enum'EInputKey', Key), 3 ) ~= BindKeyNames[i] ) { bVoiceChatKey = true; break; } } if ( bVoiceChatKey ) { if ( state == 1 || state == 2 ) { if ( PlayerOwner() != none ) { PlayerOwner().bVoiceTalk = 1; } } else { if ( PlayerOwner() != none ) { PlayerOwner().bVoiceTalk = 0; return false; } } return true; } return false; } function UpdateBotSlots(); function ClearChatBox() { t_ChatBox.lb_Chat.SetContent(""); } function TimedOut() { bTimedOut = true; PlayerOwner().ServerRestartPlayer(); bAllowClose = true; } function bool InternalOnPreDraw(Canvas C) { local int i, j, z; local string StoryString; local String SkillString; local KFGameReplicationInfo KFGRI; local PlayerController PC; local PlayerReplicationInfo InList[6]; local bool bWasThere, bShowProfilePage; PC = PlayerOwner(); if ( PC == none || PC.Level == none ) // Error? { return false; } i_Portrait.WinTop = PlayerPortraitBG.ActualTop() + 30; i_Portrait.WinHeight = PlayerPortraitBG.ActualHeight() - 36; if ( PC.PlayerReplicationInfo != none && (!PC.PlayerReplicationInfo.bWaitingPlayer || PC.PlayerReplicationInfo.bOnlySpectator) ) { PC.ClientCloseMenu(True,False); return false; } t_Footer.InternalOnPreDraw(C); WaveLabel.WinWidth = WaveLabel.ActualHeight(); KFGRI = KFGameReplicationInfo(PC.GameReplicationInfo); if ( KFGRI != none ) { WaveLabel.Caption = string(KFGRI.WaveNumber + 1) $ "/" $ string(KFGRI.FinalWave); } else { WaveLabel.Caption = "?/?"; } if ( KFPlayerController(PC) != none && bShouldUpdateVeterancy ) { if ( KFPlayerController(PC).SelectedVeterancy == none ) { bShowProfilePage = true; if ( PC.SteamStatsAndAchievements == none ) { if ( PC.Level.NetMode != NM_Client ) { PC.SteamStatsAndAchievements = PC.Spawn(PC.default.SteamStatsAndAchievementsClass, PC); if ( !PC.SteamStatsAndAchievements.Initialize(PC) ) { Controller.OpenMenu(Controller.QuestionMenuClass); GUIQuestionPage(Controller.TopPage()).SetupQuestion(class'KFMainMenu'.default.UnknownSteamErrorText, QBTN_Ok, QBTN_Ok); PC.SteamStatsAndAchievements.Destroy(); PC.SteamStatsAndAchievements = none; } else { PC.SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady; } } bShowProfilePage = false; } else if ( !PC.SteamStatsAndAchievements.bInitialized ) { PC.SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady; PC.SteamStatsAndAchievements.GetStatsAndAchievements(); bShowProfilePage = false; } if ( KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements) != none ) { for ( i = 0; i < class'KFGameType'.default.LoadedSkills.Length; i++ ) { if ( KFSteamStatsAndAchievements(PC.SteamStatsAndAchievements).GetPerkProgress(i) < 0.0 ) { PC.SteamStatsAndAchievements.OnDataInitialized = OnSteamStatsAndAchievementsReady; PC.SteamStatsAndAchievements.GetStatsAndAchievements(); bShowProfilePage = false; } } } if ( bShowProfilePage ) { OnSteamStatsAndAchievementsReady(); } bShouldUpdateVeterancy = false; } else if ( PC.SteamStatsAndAchievements != none && PC.SteamStatsAndAchievements.bInitialized ) { KFPlayerController(PC).SendSelectedVeterancyToServer(); bShouldUpdateVeterancy = false; } } /* if ( KFGRI == none ) // May not have been received yet on client. { l_TitleBar.Caption = WaitingForServerStatus; Return False; } */ // First fill in non-ready players. if ( KFGRI != none ) { for ( i = 0; i < KFGRI.PRIArray.Length; i++ ) { if ( KFGRI.PRIArray[i] == none || KFGRI.PRIArray[i].bOnlySpectator || KFGRI.PRIArray[i].bReadyToPlay ) { continue; } PlayerPerk[j].Image = none; ReadyBox[j].Checked(False); ReadyBox[j].SetCaption(Left(KFGRI.PRIArray[i].PlayerName, 20)); if ( KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkill != none ) { PlayerVetLabel[j].Caption = LvAbbrString @ KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkillLevel @ KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkill.default.VeterancyName; PlayerPerk[j].Image = KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkill.default.OnHUDIcon; } //PlayerBox[j].ImageColor = PlayerBox[j].Default.ImageColor; InList[j] = KFGRI.PRIArray[i]; j++; if( j >= 6 ) { GoTo'DoneIt'; } } // Then comes rest. for ( i = 0; i < KFGRI.PRIArray.Length; i++ ) { if ( KFGRI.PRIArray[i] == none || KFGRI.PRIArray[i].bOnlySpectator ) { Continue; } bWasThere = False; for ( z = 0; z < j; z++ ) { if ( InList[z] == KFGRI.PRIArray[i] ) { bWasThere = True; Break; } } if ( bWasThere ) { Continue; } PlayerPerk[j].Image = none; ReadyBox[j].Checked(KFGRI.PRIArray[i].bReadyToPlay); ReadyBox[j].SetCaption(Left(KFGRI.PRIArray[i].PlayerName, 20)); if ( KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkill != none ) { PlayerVetLabel[j].Caption = LvAbbrString @ KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkillLevel @ KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkill.default.VeterancyName; PlayerPerk[j].Image = KFPlayerReplicationInfo(KFGRI.PRIArray[i]).ClientVeteranSkill.default.OnHUDIcon; } if ( KFGRI.PRIArray[i].bReadyToPlay ) { //PlayerBox[j].ImageColor.R = 200; //PlayerBox[j].ImageColor.G = 75; //PlayerBox[j].ImageColor.B = 75; //PlayerBox[j].ImageColor.A = 200; if ( !bTimeoutTimeLogged ) { ActivateTimeoutTime = PC.Level.TimeSeconds; bTimeoutTimeLogged = true; } } else { //PlayerBox[j].ImageColor = PlayerBox[j].Default.ImageColor; } j++; if ( j >= 6 ) { Break; } } } while( j < 6 ) { PlayerPerk[j].Image = none; ReadyBox[j].Checked(False); ReadyBox[j].SetCaption(""); PlayerVetLabel[j].Caption = ""; //PlayerBox[j].ImageColor = PlayerBox[j].Default.ImageColor; j++; } DoneIt: StoryString = PC.Level.Description; if ( !bStoryBoxFilled ) { l_StoryBox.LoadStoryText(); bStoryBoxFilled = true; } CheckBotButtonAccess(); // Hate to do it like this, but there's no real easy way to get the SkillLevel strings from the Scoreboard, since it's only ever // called as a class. Spawning a fresh one /w DynamicLoadObject doesn't work too great (online). if ( KFGRI != none ) { if ( KFGRI.BaseDifficulty == 1 ) { SkillString = BeginnerString; } else if ( KFGRI.BaseDifficulty == 2 ) { SkillString = NormalString; } else if ( KFGRI.BaseDifficulty == 4 ) { SkillString = HardString; } else if ( KFGRI.BaseDifficulty == 5 ) { SkillString = SuicidalString; } else if ( KFGRI.BaseDifficulty == 7 ) { SkillString = HellOnEarthString; } } // l_TitleBar.Caption = (SkillString@KFGRI.GameName$" on "$PC.Level.Title); CurrentMapLabel.Caption = CurrentMapString @ PC.Level.Title; DifficultyLabel.Caption = DifficultyString @ SkillString; return false; } function bool StopClose(optional bool bCancelled) { bStoryBoxFilled = false; CheckBotButtonAccess(); UpdateBotSlots(); ClearChatBox(); // this is for the OnCanClose delegate // can't close now unless done by call to CloseAll, // or the bool has been set to true by LobbyFooter return false; } event Opened(GUIComponent Sender) // Called when the Menu Owner is opened { if ( LobbyMenuAd == none) { LobbyMenuAd = new class'LobbyMenuAd'; if (LobbyMenuAd.MenuMovie == None) { LobbyMenuAd.MenuMovie = new class'Movie'; LobbyMenuAd.MenuMovie.Callbacks = LobbyMenuAd; } } bShouldUpdateVeterancy = true; SetTimer(1,true); VideoTimer = 0.0; VideoPlayed = false; VideoOpened = false; } /* functon InternalReOpen() { VideoTimer = 0.0; VideoPlayed = false; } */ function InternalOnClosed(bool bCancelled) { if ( PlayerOwner() != none) { PlayerOwner().Advertising_ExitZone(); } if (LobbyMenuAd != None) { LobbyMenuAd.DestroyMovie(); LobbyMenuAd = none; } } event Timer() { local KFGameReplicationInfo KF; if ( PlayerOwner().PlayerReplicationInfo.bOnlySpectator ) { label_TimeOutCounter.caption = "You are a spectator."; Return; } KF = KFGameReplicationInfo(PlayerOwner().GameReplicationInfo); if ( KF==None ) { label_TimeOutCounter.caption = WaitingForServerStatus; } else if ( KF.LobbyTimeout <= 0 ) { label_TimeOutCounter.caption = WaitingForOtherPlayers; } else { label_TimeOutCounter.caption = AutoCommence$":" @ KF.LobbyTimeout; } } function DrawPerk(Canvas Canvas) { local float X, Y, Width, Height; local int CurIndex, LevelIndex; local float TempX, TempY; local float TempWidth, TempHeight; local float IconSize, ProgressBarWidth, PerkProgress; local string PerkName, PerkLevelString; local bool focused; DrawPortrait(); focused = Controller.ActivePage == self; if (focused) { VideoTimer += Controller.RenderDelta; } else { if (LobbyMenuAd == None || !LobbyMenuAd.MenuMovie.IsPlaying()) { VideoTimer = 0.0; } VideoPlayed = false; } if (focused && LobbyMenuAd != None) { Canvas.SetPos(0.066797 * Canvas.ClipX + 5, 0.325208 * Canvas.ClipY + 30); X = Canvas.ClipX / 1024; // X & Y scale AdBackground.WinWidth = 320 * X + 10; AdBackground.WinHeight = 240 * X + 37; // if ( !VideoOpened && (LobbyMenuAd.GetState() == ADASSET_STATE_DOWNLOADED)) // { // // Open the video // VideoOpened = true; // // LobbyMenuAd.MenuMovie.Open(LobbyMenuAd.DownloadPath); // } /*else*/ if ( !VideoOpened /*&& (LobbyMenuAd.GetState() == ADASSET_STATE_ERROR)*/) { // Open the video VideoOpened = true; LobbyMenuAd.MenuMovie.Open("../Movies/Movie"$(rand(MAX_MOVIES) + 1)$".bik"); } // Hold on the first frame for 3 seconds so it doesn't // Overwhelm the player if ( !VideoPlayed && VideoTimer > 3.0 ) { // Start video VideoPlayed = true; LobbyMenuAd.MenuMovie.Play(false); } Canvas.DrawTile(LobbyMenuAd.MenuMovie, 320 * X, 240 * X, 0, 0, 320, 240); } if ( KFPlayerController(PlayerOwner()) == none || KFPlayerController(PlayerOwner()).SelectedVeterancy == none || KFSteamStatsAndAchievements(PlayerOwner().SteamStatsAndAchievements) == none ) { return; } else CurIndex = KFPlayerController(PlayerOwner()).SelectedVeterancy.default.PerkIndex; LevelIndex = KFSteamStatsAndAchievements(PlayerOwner().SteamStatsAndAchievements).PerkHighestLevelAvailable(CurIndex); PerkName = KFPlayerController(PlayerOwner()).SelectedVeterancy.default.VeterancyName; PerkLevelString = LvAbbrString @ LevelIndex; PerkProgress = KFSteamStatsAndAchievements(PlayerOwner().SteamStatsAndAchievements).GetPerkProgress(CurIndex); //Get the position size etc in pixels X = i_BGPerk.ActualLeft() + 5; Y = i_BGPerk.ActualTop() + 30; Width = i_BGPerk.ActualWidth() - 10; Height = i_BGPerk.ActualHeight() - 37; // Offset for the Background TempX = X; TempY = Y + ItemSpacing / 2.0; // Initialize the Canvas Canvas.Style = 1; Canvas.Font = class'ROHUD'.Static.GetSmallMenuFont(Canvas); Canvas.SetDrawColor(255, 255, 255, 255); // Draw Item Background Canvas.SetPos(TempX, TempY); //Canvas.DrawTileStretched(ItemBackground, Width, Height); IconSize = Height - ItemSpacing; // Draw Item Background Canvas.DrawTileStretched(PerkBackground, IconSize, IconSize); Canvas.SetPos(TempX + IconSize - 1.0, Y + 7.0); Canvas.DrawTileStretched(InfoBackground, Width - IconSize, Height - ItemSpacing - 14); IconSize -= IconBorder * 2.0 * Height; // Draw Icon Canvas.SetPos(TempX + IconBorder * Height, TempY + IconBorder * Height); Canvas.DrawTile(class'KFGameType'.default.LoadedSkills[CurIndex].default.OnHUDIcon, IconSize, IconSize, 0, 0, 256, 256); TempX += IconSize + (IconToInfoSpacing * Width); TempY += TextTopOffset * Height + ItemBorder * Height; ProgressBarWidth = Width - (TempX - X) - (IconToInfoSpacing * Width); // Select Text Color Canvas.SetDrawColor(0, 0, 0, 255); // Draw the Perk's Level name Canvas.StrLen(PerkName, TempWidth, TempHeight); Canvas.SetPos(TempX, TempY); Canvas.DrawText(PerkName); // Draw the Perk's Level if ( PerkLevelString != "" ) { Canvas.StrLen(PerkLevelString, TempWidth, TempHeight); Canvas.SetPos(TempX + ProgressBarWidth - TempWidth, TempY); Canvas.DrawText(PerkLevelString); } TempY += TempHeight + (0.04 * Height); // Draw Progress Bar Canvas.SetDrawColor(255, 255, 255, 255); Canvas.SetPos(TempX, TempY); Canvas.DrawTileStretched(ProgressBarBackground, ProgressBarWidth, ProgressBarHeight * Height); Canvas.SetPos(TempX + 3.0, TempY + 3.0); Canvas.DrawTileStretched(ProgressBarForeground, (ProgressBarWidth - 6.0) * PerkProgress, (ProgressBarHeight * Height) - 6.0); if ( PlayerOwner().SteamStatsAndAchievements.bUsedCheats ) { if ( CurrentVeterancyLevel != 255 ) { lb_PerkEffects.SetContent(PerksDisabledString); CurrentVeterancyLevel = 255; } } else if ( CurrentVeterancy != KFPlayerController(PlayerOwner()).SelectedVeterancy || CurrentVeterancyLevel != LevelIndex ) { lb_PerkEffects.SetContent(KFPlayerController(PlayerOwner()).SelectedVeterancy.default.LevelEffects[LevelIndex]); CurrentVeterancy = KFPlayerController(PlayerOwner()).SelectedVeterancy; CurrentVeterancyLevel = LevelIndex; } } function DrawPortrait() { sChar = PlayerOwner().GetUrlOption("Character"); sCharD = sChar; SetPlayerRec(); } function SetPlayerRec() { local int i; local array PList; class'xUtil'.static.GetPlayerList(PList); // Filter out to only characters without the 's' menu setting for ( i = 0; i < PList.Length; i++ ) { if ( sChar ~= Plist[i].DefaultName ) { PlayerRec = PList[i]; break; } } i_Portrait.Image = PlayerRec.Portrait; } function bool ShowPerkMenu(GUIComponent Sender) { if ( PlayerOwner() != none) { PlayerOwner().ClientOpenMenu("KFGUI.KFProfilePage", false); } return true; } function OnSteamStatsAndAchievementsReady() { Controller.OpenMenu("KFGUI.KFProfilePage"); Controller.OpenMenu(Controller.QuestionMenuClass); GUIQuestionPage(Controller.TopPage()).SetupQuestion(SelectPerkInformationString, QBTN_Ok, QBTN_Ok); } defaultproperties { IconBorder=0.05 ItemBorder=0.11 ProgressBarHeight=0.3 IconToInfoSpacing=0.05 TextTopOffset=0.05 ItemSpacing=0.0 PerkBackground=Texture'KF_InterfaceArt_tex.Menu.Item_box_box' InfoBackground=Texture'KF_InterfaceArt_tex.Menu.Item_box_bar' ProgressBarBackground=Texture'KF_InterfaceArt_tex.Menu.Innerborder' ProgressBarForeground=Texture'InterfaceArt_tex.Menu.progress_bar' WaitingForServerStatus="Awaiting server status..." WaitingForOtherPlayers="Waiting for players to be ready..." AutoCommence="Game will auto-commence in" CurrentMapString="Current Map:" DifficultyString="Difficulty Level:" LvAbbrString="Lv" BeginnerString="Beginner" NormalString="Normal" HardString="Hard" SuicidalString="Suicidal" HellOnEarthString="Hell on Earth" SelectPerkInformationString="Perks enhance certain abilities of your character.|There are 6 Perks to choose from in the center of the screen.|Each has different Effects shown in the upper right.|Perks improve as you complete the Level Requirements shown on the right." PerksDisabledString="Perk Progress has been disabled because the Game Length is set to Custom, Sandbox Mode is on, or you have previously used Cheats." Begin Object Class=moCheckBox Name=ReadyBox0 bValueReadOnly=True ComponentJustification=TXTA_Left CaptionWidth=0.820000 Caption="NAME1" OnCreateComponent=ReadyBox0.InternalOnCreateComponent WinTop=0.0475 WinLeft=0.075000 WinWidth=0.400000 WinHeight=0.045000 bAcceptsInput=false bNeverFocus=true bAnimating=true RenderWeight=0.55 LabelColor=(R=10,G=10,B=10,A=210) LabelStyleName="" End Object ReadyBox(0)=moCheckBox'KFGui.LobbyMenu.ReadyBox0' Begin Object Class=moCheckBox Name=ReadyBox1 bValueReadOnly=True ComponentJustification=TXTA_Left CaptionWidth=0.820000 Caption="NAME2" OnCreateComponent=ReadyBox1.InternalOnCreateComponent WinTop=0.0925000 WinLeft=0.075000 WinWidth=0.400000 WinHeight=0.045000 bAcceptsInput=false bNeverFocus=true bAnimating=true RenderWeight=0.55 LabelColor=(R=0,G=0,B=0,A=255) End Object ReadyBox(1)=moCheckBox'KFGui.LobbyMenu.ReadyBox1' Begin Object Class=moCheckBox Name=ReadyBox2 bValueReadOnly=True ComponentJustification=TXTA_Left CaptionWidth=0.820000 Caption="NAME3" OnCreateComponent=ReadyBox2.InternalOnCreateComponent WinTop=0.137500 WinLeft=0.075000 WinWidth=0.400000 WinHeight=0.048000 bAcceptsInput=false bNeverFocus=true bAnimating=true RenderWeight=0.55 LabelColor=(R=0,G=0,B=0,A=255) End Object ReadyBox(2)=moCheckBox'KFGui.LobbyMenu.ReadyBox2' Begin Object Class=moCheckBox Name=ReadyBox3 bValueReadOnly=True ComponentJustification=TXTA_Left CaptionWidth=0.820000 Caption="NAME4" OnCreateComponent=ReadyBox3.InternalOnCreateComponent WinTop=0.182500 WinLeft=0.075000 WinWidth=0.400000 WinHeight=0.045000 bAcceptsInput=false bNeverFocus=true bAnimating=true RenderWeight=0.55 LabelColor=(R=0,G=0,B=0,A=255) End Object ReadyBox(3)=moCheckBox'KFGui.LobbyMenu.ReadyBox3' Begin Object Class=moCheckBox Name=ReadyBox4 bValueReadOnly=True ComponentJustification=TXTA_Left CaptionWidth=0.820000 Caption="NAME5" OnCreateComponent=ReadyBox4.InternalOnCreateComponent WinTop=0.227500 WinLeft=0.075000 WinWidth=0.400000 WinHeight=0.045000 bAcceptsInput=false bNeverFocus=true bAnimating=true RenderWeight=0.55 LabelColor=(R=0,G=0,B=0,A=255) End Object ReadyBox(4)=moCheckBox'KFGui.LobbyMenu.ReadyBox4' Begin Object Class=moCheckBox Name=ReadyBox5 bValueReadOnly=True ComponentJustification=TXTA_Left CaptionWidth=0.820000 Caption="NAME6" OnCreateComponent=ReadyBox5.InternalOnCreateComponent WinTop=0.272500 WinLeft=0.075000 WinWidth=0.400000 WinHeight=0.045000 bAcceptsInput=false bNeverFocus=true bAnimating=true RenderWeight=0.55 LabelColor=(R=0,G=0,B=0,A=255) End Object ReadyBox(5)=moCheckBox'KFGui.LobbyMenu.ReadyBox5' Begin Object Class=KFPlayerReadyBar Name=Player1BackDrop WinTop=0.040000 WinLeft=0.040000 WinWidth=0.350000 WinHeight=0.045000 RenderWeight=0.35 End Object PlayerBox(0)=KFPlayerReadyBar'KFGui.LobbyMenu.Player1BackDrop' Begin Object Class=GUIImage Name=Player1P Image=none//texture'KillingFloorHUD.Perks.Perk_FireBug' ImageColor=(B=255,G=255,R=255,A=255) ImageStyle=ISTY_Justified WinTop=0.043000 WinLeft=0.040000 WinWidth=0.039000 WinHeight=0.039000 RenderWeight=0.56 End Object PlayerPerk(0)=GUIImage'KFGui.LobbyMenu.Player1P' Begin Object Class=KFPlayerReadyBar Name=Player2BackDrop WinTop=0.085000 WinLeft=0.040000 WinWidth=0.350000 WinHeight=0.045000 RenderWeight=0.35 End Object PlayerBox(1)=KFPlayerReadyBar'KFGui.LobbyMenu.Player2BackDrop' Begin Object Class=GUIImage Name=Player2P Image=none//texture'KillingFloorHUD.Perks.Perk_FireBug' ImageColor=(B=255,G=255,R=255,A=255) ImageStyle=ISTY_Justified WinTop=0.088000 WinLeft=0.040000 WinWidth=0.045000 WinHeight=0.039000 RenderWeight=0.56 End Object PlayerPerk(1)=GUIImage'KFGui.LobbyMenu.Player2P' Begin Object Class=KFPlayerReadyBar Name=Player3BackDrop WinTop=0.130000 WinLeft=0.040000 WinWidth=0.350000 WinHeight=0.045000 RenderWeight=0.35 End Object PlayerBox(2)=KFPlayerReadyBar'KFGui.LobbyMenu.Player3BackDrop' Begin Object Class=GUIImage Name=Player3P Image=none//texture'KillingFloorHUD.Perks.Perk_FireBug' ImageColor=(B=255,G=255,R=255,A=255) ImageStyle=ISTY_Justified WinTop=0.133000 WinLeft=0.040000 WinWidth=0.045000 WinHeight=0.039000 RenderWeight=0.56 End Object PlayerPerk(2)=GUIImage'KFGui.LobbyMenu.Player3P' Begin Object Class=KFPlayerReadyBar Name=Player4BackDrop WinTop=0.175000 WinLeft=0.040000 WinWidth=0.350000 WinHeight=0.045000 RenderWeight=0.35 End Object PlayerBox(3)=KFPlayerReadyBar'KFGui.LobbyMenu.Player4BackDrop' Begin Object Class=GUIImage Name=Player4P Image=none//texture'KillingFloorHUD.Perks.Perk_FireBug' ImageColor=(B=255,G=255,R=255,A=255) ImageStyle=ISTY_Justified WinTop=0.178000 WinLeft=0.040000 WinWidth=0.045000 WinHeight=0.039000 RenderWeight=0.56 End Object PlayerPerk(3)=GUIImage'KFGui.LobbyMenu.Player4P' Begin Object Class=KFPlayerReadyBar Name=Player5BackDrop WinTop=0.220000 WinLeft=0.040000 WinWidth=0.350000 WinHeight=0.045000 RenderWeight=0.35 End Object PlayerBox(4)=KFPlayerReadyBar'KFGui.LobbyMenu.Player5BackDrop' Begin Object Class=GUIImage Name=Player5P Image=none//texture'KillingFloorHUD.Perks.Perk_FireBug' ImageColor=(B=255,G=255,R=255,A=255) ImageStyle=ISTY_Justified WinTop=0.223000 WinLeft=0.040000 WinWidth=0.045000 WinHeight=0.039000 RenderWeight=0.56 End Object PlayerPerk(4)=GUIImage'KFGui.LobbyMenu.Player5P' Begin Object Class=KFPlayerReadyBar Name=Player6BackDrop WinTop=0.265000 WinLeft=0.040000 WinWidth=0.350000 WinHeight=0.045000 RenderWeight=0.35 End Object PlayerBox(5)=KFPlayerReadyBar'KFGui.LobbyMenu.Player6BackDrop' Begin Object Class=GUIImage Name=Player6P Image=none//texture'KillingFloorHUD.Perks.Perk_FireBug' ImageColor=(B=255,G=255,R=255,A=255) ImageStyle=ISTY_Justified WinTop=0.268000 WinLeft=0.040000 WinWidth=0.045000 WinHeight=0.039000 RenderWeight=0.56 End Object PlayerPerk(5)=GUIImage'KFGui.LobbyMenu.Player6P' Begin Object Class=GUILabel Name=Player1Veterancy TextAlign=TXTA_Right TextFont="UT2SmallFont" TextColor=(B=19,G=19,R=19,A=255) WinTop=0.040000 WinLeft=0.229070 WinWidth=0.151172 WinHeight=0.045000 RenderWeight=0.5 End Object PlayerVetLabel(0)=GUILabel'KFGui.LobbyMenu.Player1Veterancy' Begin Object Class=GUILabel Name=Player2Veterancy TextFont="UT2SmallFont" TextAlign=TXTA_Right TextColor=(B=19,G=19,R=19,A=255) WinTop=0.085000 WinLeft=0.229070 WinWidth=0.151172 WinHeight=0.045000 RenderWeight=0.5 End Object PlayerVetLabel(1)=GUILabel'KFGui.LobbyMenu.Player2Veterancy' Begin Object Class=GUILabel Name=Player3Veterancy TextFont="UT2SmallFont" TextAlign=TXTA_Right TextColor=(B=19,G=19,R=19,A=255) WinTop=0.130000 WinLeft=0.229070 WinWidth=0.151172 WinHeight=0.045000 RenderWeight=0.55 End Object PlayerVetLabel(2)=GUILabel'KFGui.LobbyMenu.Player3Veterancy' Begin Object Class=GUILabel Name=Player4Veterancy TextFont="UT2SmallFont" TextAlign=TXTA_Right TextColor=(B=19,G=19,R=19,A=255) WinTop=0.175000 WinLeft=0.229070 WinWidth=0.151172 WinHeight=0.045000 RenderWeight=0.55 End Object PlayerVetLabel(3)=GUILabel'KFGui.LobbyMenu.Player4Veterancy' Begin Object Class=GUILabel Name=Player5Veterancy TextFont="UT2SmallFont" TextAlign=TXTA_Right TextColor=(B=19,G=19,R=19,A=255) WinTop=0.220000 WinLeft=0.229070 WinWidth=0.151172 WinHeight=0.045000 RenderWeight=0.55 End Object PlayerVetLabel(4)=GUILabel'KFGui.LobbyMenu.Player5Veterancy' Begin Object Class=GUILabel Name=Player6Veterancy TextFont="UT2SmallFont" TextAlign=TXTA_Right TextColor=(B=19,G=19,R=19,A=255) WinTop=0.265000 WinLeft=0.229070 WinWidth=0.151172 WinHeight=0.045000 RenderWeight=0.55 End Object PlayerVetLabel(5)=GUILabel'KFGui.LobbyMenu.Player6Veterancy' Begin Object Class=KFLobbyChat Name=ChatBox OnCreateComponent=ChatBox.InternalOnCreateComponent TabOrder=1 RenderWeight=0.01 //OnPreDraw=ChatBox.FloatingPreDraw //OnRendered=ChatBox.FloatingRendered OnHover=ChatBox.FloatingHover //OnMousePressed=ChatBox.FloatingMousePressed //OnMouseRelease=ChatBox.FloatingMouseRelease WinTop=0.80760 WinLeft=0.016090 WinWidth=0.971410 WinHeight=0.100000 ToolTip=none End Object t_ChatBox=KFLobbyChat'KFGui.LobbyMenu.ChatBox' /* Begin Object Class=KFLobbyTitleLabel Name=LobbyTitle TextColor=(B=255,G=255,R=255) WinTop=0.009375 WinLeft=0.043164 WinWidth=0.915313 WinHeight=0.049359 RenderWeight=0.300000 bScaleToParent=True End Object l_TitleBar=KFLobbyTitleLabel'KFGui.LobbyMenu.LobbyTitle' */ Begin Object Class=KFMapStoryLabel Name=LobbyMapStoryBox OnCreateComponent=LobbyMapStoryBox.InternalOnCreateComponent ToolTip=none End Object l_StoryBox=KFMapStoryLabel'KFGui.LobbyMenu.LobbyMapStoryBox' Begin Object Class=AltSectionBackground Name=GameInfoB WinTop=0.037851 WinLeft=0.489062 WinWidth=0.487374 WinHeight=0.075000 ToolTip=none End Object GameInfoBG=GameInfoB Begin Object Class=AltSectionBackground Name=StoryBoxBackground bNoCaption=true WinTop=0.109808 WinLeft=0.489062 WinWidth=0.487374 WinHeight=0.309092 OnPreDraw=StoryBoxBackground.InternalPreDraw ToolTip=none End Object StoryBoxBG=GUISectionBackground'KFGui.LobbyMenu.StoryBoxBackground' Begin Object Class=KFBotComboBox Name=BotComboBox1 ComponentJustification=TXTA_Left CaptionWidth=0.650000 Caption=" Bot Control" OnCreateComponent=BotComboBox1.InternalOnCreateComponent Hint="Select Bot to Add" WinTop=0.550000 WinLeft=0.400000 WinWidth=0.550000 TabOrder=10 OnChange=LobbyMenu.InternalOnChange End Object BotSlot1=KFBotComboBox'KFGui.LobbyMenu.BotComboBox1' Begin Object Class=KFAddBotButton Name=AddBotGUIButton OnCreateComponent=AddBotGUIButton.InternalOnCreateComponent WinTop=0.650000 WinLeft=0.450000 WinWidth=0.450000 OnChange=LobbyMenu.InternalOnChange End Object AddBotButton=KFAddBotButton'KFGui.LobbyMenu.AddBotGUIButton' Begin Object Class=KFRemoveBotButton Name=RemoveBotGUIButton OnCreateComponent=RemoveBotGUIButton.InternalOnCreateComponent WinTop=0.700000 WinLeft=0.320000 WinWidth=0.590000 OnChange=LobbyMenu.InternalOnChange End Object RemoveBotButton=KFRemoveBotButton'KFGui.LobbyMenu.RemoveBotGUIButton' Begin Object Class=KFRemoveAllBotButton Name=RemoveAllBotsGUIButton OnCreateComponent=RemoveAllBotsGUIButton.InternalOnCreateComponent WinTop=0.750000 WinLeft=0.320000 WinWidth=0.590000 OnChange=LobbyMenu.InternalOnChange End Object TotallyRemoveBotsButton=KFRemoveAllBotButton'KFGui.LobbyMenu.RemoveAllBotsGUIButton' Begin Object Class=AltSectionBackground Name=BotAreaBackground bNoCaption=true WinTop=0.500000 WinLeft=0.450000 WinWidth=0.520000 WinHeight=0.380000 OnPreDraw=BotAreaBackground.InternalPreDraw // HeaderBase=none End Object BotsBG=AltSectionBackground'KFGui.LobbyMenu.BotAreaBackground' Begin Object Class=LobbyFooter Name=BuyFooter RenderWeight=0.300000 TabOrder=8 bBoundToParent=False bScaleToParent=False OnPreDraw=BuyFooter.InternalOnPreDraw ToolTip=none End Object t_Footer=LobbyFooter'KFGui.LobbyMenu.BuyFooter' Begin Object Class=GUILabel Name=TimeOutCounter TextAlign=TXTA_Center Caption="Game will auto-commence in: " FontScale=FNS_Medium TextColor=(R=175,G=176,B=158,A=255) WinTop=0.00001 WinLeft=0.059552 WinWidth=0.346719 WinHeight=0.045704 TabOrder=6 End Object label_TimeOutCounter=GUILabel'KFGui.LobbyMenu.TimeOutCounter' Begin Object class=GUISectionBackground Name=BGPerk WinTop=0.432291 WinLeft=0.650976 WinWidth=0.325157 WinHeight=0.138086 Caption="Current Perk" bFillClient=true Hint="" End Object i_BGPerk=BGPerk Begin Object class=GUISectionBackground Name=BGPerkEffects WinTop=0.568448 WinLeft=0.650976 WinWidth=0.325157 WinHeight=0.307442 Caption="Perk Effects" bFillClient=true Hint="" End Object i_BGPerkEffects=BGPerkEffects Begin Object Class=GUIScrollTextBox Name=PerkEffectsScroll WinTop=0.626094 WinLeft=0.659687 WinWidth=0.309454 WinHeight=0.244961 CharDelay=0.0025 EOLDelay=0.1 TabOrder=9 StyleName="NoBackground" Hint="" ToolTip=none End Object lb_PerkEffects=PerkEffectsScroll Begin Object class=GUIImage Name=PlayerPortrait WinTop=0.472396 WinLeft=0.492522 WinWidth=0.156368 WinHeight=0.397022 Image=Texture'InterfaceArt_tex.Menu.changeme_texture' //Material'2K4Menus.Controls.thinpipe_b' ImageColor=(R=255,G=255,B=255,A=255) ImageRenderStyle=MSTY_Normal ImageStyle=ISTY_Scaled RenderWeight=0.3 //OnLoadINI=InternalOnLoadINI IniOption="@Internal" //OnDraw=InternalDraw End Object i_Portrait=PlayerPortrait Begin Object class=GUISectionBackground Name=PlayerPortraitB WinTop=0.432291 WinLeft=0.489062 WinWidth=0.163305 WinHeight=0.443451 End Object PlayerPortraitBG=PlayerPortraitB Begin Object Class=GUILabel Name=PerkClickArea WinTop=0.432395 WinLeft=0.488851 WinWidth=0.444405 WinHeight=0.437312 OnClick=ShowPerkMenu bAcceptsInput=true OnClickSound=CS_Click End Object PerkClickLabel=GUILabel'KFGui.LobbyMenu.PerkClickArea' Begin Object class=GUISectionBackground Name=ADBG WinTop=0.325208 WinLeft=0.066797 WinWidth=0.322595 WinHeight=0.374505 RenderWeight=0.3 End Object ADBackground=ADBG Begin Object Class=GUILabel Name=CurrentMapL WinTop=0.042179 WinLeft=0.496524 WinWidth=0.36 WinHeight=0.035714 RenderWeight=0.900 Caption="LAlalala Map" TextColor=(R=175,G=176,B=158,A=255) End Object CurrentMapLabel=CurrentMapL Begin Object Class=GUILabel Name=DifficultyL WinTop=0.072381 WinLeft=0.496524 WinWidth=0.36 WinHeight=0.035714 RenderWeight=0.900 Caption="Difficulty" TextColor=(R=175,G=176,B=158,A=255) End Object DifficultyLabel=DifficultyL Begin Object class=GUIImage Name=WaveB WinTop=0.043810 WinLeft=0.923238 WinWidth=0.051642 WinHeight=0.061783 Image=Texture'KillingFloorHud.HUD.HUD_Bio_Circle' //Material'2K4Menus.Controls.thinpipe_b' ImageColor=(R=255,G=255,B=255,A=255) ImageRenderStyle=MSTY_Normal ImageStyle=ISTY_Justified RenderWeight=0.8 End Object WaveBG=WaveB Begin Object Class=GUILabel Name=WaveL Caption="1/4" TextAlign=TXTA_Center TextColor=(B=158,G=176,R=175) TextFont="UT2MenuFont" VertAlign=TXTA_Center FontScale=FNS_Small WinTop=0.043810 WinLeft=0.923238 WinWidth=0.051642 WinHeight=0.061783 RenderWeight=0.900000 End Object WaveLabel=WaveL Begin Object Class=GUIHeader Name=ServerBrowserHeader bUseTextHeight=false Caption="" WinHeight=0 bVisible=false End Object t_Header=ServerBrowserHeader c_Tabs=PageTabs i_Background=None i_bkChar=None i_bkScan=None bRenderWorld=True bAllowedAsLast=True OnCanClose=LobbyMenu.StopClose WinHeight=0.500000 OnPreDraw=LobbyMenu.InternalOnPreDraw OnRendered=DrawPerk OnClose=InternalOnClosed OnKeyEvent=InternalOnKeyEvent }