//============================================================================== // Description // // Written by Ron Prestenback (based on XInterface.SettingsPage) // © 2003, Epic Games, Inc. All Rights Reserved //============================================================================== class UT2K4SettingsPage extends UT2K4MainPage; // if _RO_ // else //#exec OBJ LOAD FILE=InterfaceContent.utx // end if _RO_ var Automated GUIButton b_Back; var Automated GUIButton b_Apply, b_Reset; var() config bool bApplyImmediately; // Whether to apply changes to setting immediately var UT2K4Tab_GameSettings tp_Game; var() editconst noexport float SavedPitch; var() string PageCaption; var() GUIButton SizingButton; var() Settings_Tabs ActivePanel; var localized string InvalidStats; function InitComponent(GUIController MyController, GUIComponent MyOwner) { local rotator PlayerRot; local int i; Super.InitComponent(MyController, MyOwner); PageCaption = t_Header.Caption; GetSizingButton(); // Set camera's pitch to zero when menu initialised (otherwise spinny weap goes kooky) PlayerRot = PlayerOwner().Rotation; SavedPitch = PlayerRot.Pitch; PlayerRot.Pitch = 0; PlayerRot.Roll = 0; PlayerOwner().SetRotation(PlayerRot); for ( i = 0; i < PanelCaption.Length && i < PanelClass.Length && i < PanelHint.Length; i++ ) { Profile("Settings_" $ PanelCaption[i]); c_Tabs.AddTab(PanelCaption[i], PanelClass[i],, PanelHint[i]); Profile("Settings_" $ PanelCaption[i]); } tp_Game = UT2K4Tab_GameSettings(c_Tabs.BorrowPanel(PanelCaption[3])); } function GetSizingButton() { local int i; SizingButton = None; for (i = 0; i < Components.Length; i++) { if (GUIButton(Components[i]) == None) continue; if ( SizingButton == None || Len(GUIButton(Components[i]).Caption) > Len(SizingButton.Caption)) SizingButton = GUIButton(Components[i]); } } function bool InternalOnPreDraw(Canvas Canvas) { local int X, i; local float XL,YL; if (SizingButton == None) return false; SizingButton.Style.TextSize(Canvas, SizingButton.MenuState, SizingButton.Caption, XL, YL, SizingButton.FontScale); XL += 32; X = Canvas.ClipX - XL; for (i = Components.Length - 1; i >= 0; i--) { if (GUIButton(Components[i]) == None) continue; Components[i].WinWidth = XL; Components[i].WinLeft = X; X -= XL; } return false; } function bool InternalOnCanClose(optional bool bCanceled) { if(Controller.ActivePage == Self && !tp_Game.ValidStatConfig()) { c_Tabs.ActivateTabByPanel(tp_Game, True); Controller.OpenMenu("GUI2K4.UT2K4GenericMessageBox",InvalidStats,tp_Game.l_Warning.Caption); return false; } return true; } function InternalOnClose(optional Bool bCanceled) { local rotator NewRot; // Reset player NewRot = PlayerOwner().Rotation; NewRot.Pitch = SavedPitch; PlayerOwner().SetRotation(NewRot); Super.OnClose(bCanceled); } function InternalOnChange(GUIComponent Sender) { Super.InternalOnChange(Sender); if ( c_Tabs.ActiveTab == None ) ActivePanel = None; else ActivePanel = Settings_Tabs(c_Tabs.ActiveTab.MyPanel); } function BackButtonClicked() { if ( InternalOnCanClose(False) ) { c_Tabs.ActiveTab.OnDeActivate(); Controller.CloseMenu(False); } } function DefaultsButtonClicked() { ActivePanel.ResetClicked(); } function bool ButtonClicked(GUIComponent Sender) { ActivePanel.AcceptClicked(); return true; } event bool NotifyLevelChange() { bPersistent = false; LevelChanged(); return true; } defaultproperties { OnClose=InternalOnClose OnCanClose=InternalOnCanClose OnPreDraw=InternalOnPreDraw Begin Object class=GUIHeader name=SettingHeader Caption="Settings" WinHeight=25 RenderWeight=0.3 End Object Begin Object Class=UT2K4Settings_Footer Name=SettingFooter RenderWeight=0.3 TabOrder=4 End Object Begin Object Class=GUIButton Name=aApply Caption="APPLY" WinWidth=0.097460 WinLeft=0.902148 WinHeight=0.033203 WinTop=0.966146 TabOrder=1 bVisible=True OnClick=ButtonClicked StyleName="SquareButton" MenuState=MSAT_Disabled RenderWeight=1.0 End Object t_Header=SettingHeader t_Footer=SettingFooter WinWidth=1.0 WinHeight=1.0 WinTop=0.0 WinLeft=0.0 PanelCaption(0)="Display" PanelCaption(1)="Audio" PanelCaption(2)="Player" PanelCaption(3)="Game" PanelCaption(4)="Input" PanelCaption(5)="Weapons" PanelCaption(6)="HUD" PanelClass(0)="GUI2K4.UT2K4Tab_DetailSettings" PanelClass(1)="GUI2K4.UT2K4Tab_AudioSettings" PanelClass(2)="GUI2K4.UT2K4Tab_PlayerSettings" PanelClass(3)="GUI2K4.UT2K4Tab_GameSettings" PanelClass(4)="GUI2K4.UT2K4Tab_IForceSettings" PanelClass(5)="GUI2K4.UT2K4Tab_WeaponPref" PanelClass(6)="GUI2K4.UT2K4Tab_HudSettings" PanelHint(0)="Select your resolution or change your display and detail settings..." PanelHint(1)="Adjust your audio experience..." PanelHint(2)="Configure your UT2004 Avatar..." PanelHint(3)="Configure game and network related settings..." PanelHint(4)="Configure misc. input options..." PanelHint(5)="Adjust your weapon priorities and settings..." PanelHint(6)="Customize your HUD..." InvalidStats="Invalid Stats Info" bApplyImmediately=True }