rott/kf_sources/GUI2K4/Classes/UT2K4GUIController.uc
2026-07-14 20:27:09 +07:00

318 lines
10 KiB
Ucode

// ====================================================================
// Written by Joe Wilcox
// (c) 2002, Epic Games, Inc. All Rights Reserved
// ====================================================================
class UT2K4GUIController extends GUIController;
// if _RO_
// else
//#exec OBJ LOAD FILE=InterfaceContent.utx
// end if _RO_
#exec OBJ LOAD FILE=ROMenuSounds.uax
function ReturnToMainMenu()
{
CloseAll(true);
if ( MenuStack.Length == 0 )
OpenMenu(GetMainMenuClass());
}
function bool SetFocusTo( FloatingWindow Menu )
{
local int i;
if ( ActivePage == Menu )
return true;
for ( i = 0; i < MenuStack.Length; i++ )
{
if ( FloatingWindow(MenuStack[i]) == None )
continue;
if ( MenuStack[i] == Menu )
{
if ( i + 1 < MenuStack.Length )
{
MenuStack[i+1].ParentPage = Menu.ParentPage;
Menu.ParentPage = MenuStack[MenuStack.Length - 1];
}
MenuStack[MenuStack.Length] = Menu;
MenuStack.Remove(i,1);
ActivePage = Menu;
return true;
}
}
return false;
}
// If the disconnect menu is opened while any other menus are on the stack, they will remain there, since the
// disconnect options menu cannot be closed, only replaced
event bool OpenMenu(string NewMenuName, optional string Param1, optional string Param2)
{
if ( NewMenuName ~= class'GameEngine'.default.DisconnectMenuClass
&& ( InStr(Param1,"?closed") != -1 || InStr(Param1,"?failed") != -1 || InStr(Param1,"?disconnect") != -1 ) )
{
if ( bModAuthor )
log("Opening disconnect menu with failed, closed, or disconnect in URL",'ModAuthor');
CloseAll(True,True);
}
return Super.OpenMenu(NewMenuName, Param1, Param2);
}
// Should override this function if you have less options in your custom start menu
static simulated event Validate()
{
if ( default.MainMenuOptions.Length < 7 )
ResetConfig();
}
static simulated function string GetSinglePlayerPage()
{
Validate();
return default.MainMenuOptions[0];
}
static simulated function string GetServerBrowserPage()
{
Validate();
return default.MainMenuOptions[1];
}
static simulated function string GetMultiplayerPage()
{
Validate();
return default.MainMenuOptions[2];
}
static simulated function string GetInstantActionPage()
{
Validate();
return default.MainMenuOptions[3];
}
static simulated function string GetModPage()
{
Validate();
return default.MainMenuOptions[4];
}
static simulated function string GetSettingsPage()
{
Validate();
return default.MainMenuOptions[5];
}
static simulated function string GetQuitPage()
{
Validate();
return default.MainMenuOptions[6];
}
// 20%!! increase in menu load speed for menus that contain large numbers of the same component
// (such as GUIMenuOption)
function class<GUIComponent> AddComponentClass(string ClassName)
{
local int i;
local class<GUIComponent> Cls;
for ( i = 0; i < RegisteredClasses.Length; i++ )
if ( string(RegisteredClasses[i]) ~= ClassName )
return RegisteredClasses[i];
Cls = class<GUIComponent>(DynamicLoadObject(ClassName,class'Class'));
if ( Cls != None )
RegisteredClasses[RegisteredClasses.Length] = Cls;
return Cls;
}
function PurgeComponentClasses()
{
if ( RegisteredClasses.Length > 0 )
RegisteredClasses.Remove(0, RegisteredClasses.Length);
Super.PurgeComponentClasses();
}
defaultproperties
{
Begin Object Class=fntUT2k4Menu Name=GUIMenuFont
End Object
FontStack(0)=fntUT2k4Menu'GUIMenuFont'
Begin Object Class=fntUT2k4Default Name=GUIDefaultFont
End Object
FontStack(1)=fntUT2k4Default'GUIDefaultFont'
Begin Object Class=fntUT2k4Large Name=GUILargeFont
End Object
FontStack(2)=fntUT2k4Large'GUILargeFont'
Begin Object Class=fntUT2k4Header Name=GUIHeaderFont
End Object
FontStack(3)=fntUT2k4Header'GUIHeaderFont'
Begin Object Class=fntUT2k4Small Name=GUISmallFont
End Object
FontStack(4)=fntUT2k4Small'GUISmallFont'
Begin Object Class=fntUT2k4MidGame Name=GUIMidGameFont
End Object
FontStack(5)=fntUT2k4MidGame'GUIMidGameFont'
Begin Object Class=fntUT2k4SmallHeader Name=GUISmallHeaderFont
End Object
FontStack(6)=fntUT2k4SmallHeader'GUISmallHeaderFont'
Begin Object Class=fntUT2k4ServerList Name=GUIServerListFont
End Object
FontStack(7)=fntUT2k4ServerList'GUIServerListFont'
Begin Object Class=fntUT2k4IRC Name=GUIIRCFont
End Object
FontStack(8)=fntUT2K4IRC'GUIIRCFont'
Begin Object Class=fntUT2K4MainMenu Name=GUIMainMenuFont
End Object
FontStack(9)=fntUT2K4MainMenu'GUIMainMenuFont'
Begin Object Class=fntUT2K4Medium Name=GUIMediumMenuFont
End Object
FontStack(10)=GUIMediumMenuFont
FONT_NUM=11
DefaultStyleNames(0)="GUI2K4.STY2RoundButton"
DefaultStyleNames(1)="GUI2K4.STY2RoundScaledButton"
DefaultStyleNames(2)="GUI2K4.STY2SquareButton"
DefaultStyleNames(3)="GUI2K4.STY2ListBox"
DefaultStyleNames(4)="GUI2K4.STY2ScrollZone"
DefaultStyleNames(5)="GUI2K4.STY2TextButton"
DefaultStyleNames(6)="GUI2K4.STY2Page"
DefaultStyleNames(7)="GUI2K4.STY2Header"
DefaultStyleNames(8)="GUI2K4.STY2Footer"
DefaultStyleNames(9)="GUI2K4.STY2TabButton"
DefaultStyleNames(10)="GUI2K4.STY2CharButton"
DefaultStyleNames(11)="GUI2K4.STY2ArrowLeft"
DefaultStyleNames(12)="GUI2K4.STY2ArrowRight"
DefaultStyleNames(13)="GUI2K4.STY2ServerBrowserGrid"
DefaultStyleNames(14)="GUI2K4.STY2NoBackground"
DefaultStyleNames(15)="GUI2K4.STY2ServerBrowserGridHeader"
DefaultStyleNames(16)="GUI2K4.STY2SliderCaption"
DefaultStyleNames(17)="GUI2K4.STY2LadderButton"
DefaultStyleNames(18)="GUI2K4.STY2LadderButtonHi"
DefaultStyleNames(19)="GUI2K4.STY2LadderButtonActive"
DefaultStyleNames(20)="GUI2K4.STY2BindBox"
DefaultStyleNames(21)="GUI2K4.STY2SquareBar"
DefaultStyleNames(22)="GUI2K4.STY2MidGameButton"
DefaultStyleNames(23)="GUI2K4.STY2TextLabel"
DefaultStyleNames(24)="GUI2K4.STY2ComboListBox"
DefaultStyleNames(25)="GUI2K4.STY2SquareMenuButton"
DefaultStyleNames(26)="GUI2K4.STY2IRCText"
DefaultStyleNames(27)="GUI2K4.STY2IRCEntry"
DefaultStyleNames(28)="GUI2K4.STY2BrowserButton"
DefaultStyleNames(29)="GUI2K4.STY2ContextMenu"
DefaultStyleNames(30)="GUI2K4.STY2ServerListContextMenu"
DefaultStyleNames(31)="GUI2K4.STY2ListSelection"
DefaultStyleNames(32)="GUI2K4.STY2TabBackground"
DefaultStyleNames(33)="GUI2K4.STY2BrowserListSel"
DefaultStyleNames(34)="GUI2K4.STY2EditBox"
DefaultStyleNames(35)="GUI2K4.STY2CheckBox
DefaultStyleNames(36)="GUI2K4.STY2CheckBoxCheck"
DefaultStyleNames(37)="GUI2K4.STY2SliderKnob"
DefaultStyleNames(38)="GUI2K4.STY2BottomTabButton"
DefaultStyleNames(39)="GUI2K4.STY2ListSectionHeader"
DefaultStyleNames(40)="GUI2K4.STY2ItemOutline"
DefaultStyleNames(41)="GUI2K4.STY2ListHighlight"
DefaultStyleNames(42)="GUI2K4.STY2MouseOverLabel"
DefaultStyleNames(43)="GUI2K4.STY2SliderBar"
DefaultStyleNames(44)="GUI2K4.STY2DarkTextLabel"
DefaultStyleNames(45)="GUI2K4.STY2TextButtonEffect"
DefaultStyleNames(46)="GUI2K4.STY2ArrowRightDbl"
DefaultStyleNames(47)="GUI2K4.STY2ArrowLeftDbl"
DefaultStyleNames(48)="GUI2K4.STY2FooterButton"
DefaultStyleNames(49)="GUI2K4.STY2SectionHeaderText"
DefaultStyleNames(50)="GUI2K4.STY2ComboButton"
DefaultStyleNames(51)="GUI2K4.STY2VertUpButton"
DefaultStyleNames(52)="GUI2K4.STY2VertDownButton"
DefaultStyleNames(53)="GUI2K4.STY2VertGrip"
DefaultStyleNames(54)="GUI2K4.STY2Spinner"
DefaultStyleNames(55)="GUI2K4.STY2SectionHeaderTop"
DefaultStyleNames(56)="GUI2K4.STY2SectionHeaderBar"
DefaultStyleNames(57)="GUI2K4.STY2CloseButton"
DefaultStyleNames(58)="GUI2K4.STY2CoolScroll"
DefaultStyleNames(59)="GUI2K4.sTY2AltComboButton"
STYLE_NUM=60
// if _RO_
/*
// end if _RO_
ImageList(0)=Material'2K4Menus.Controls.checkboxball_b'
ImageList(1)=Material'2K4Menus.NewControls.ComboListDropDown'
ImageList(2)=Material'2K4Menus.Newcontrols.LeftMark'
ImageList(3)=Material'2K4Menus.Newcontrols.RightMark'
ImageList(4)=Material'2K4Menus.Controls.plus_b'
ImageList(5)=Material'2K4Menus.Controls.minus_b'
ImageList(6)=Material'2K4Menus.NewControls.UpMark'
ImageList(7)=Material'2K4Menus.NewControls.DownMark'
// if _RO_
*/
// end if _RO_
// ifndef _RO_
// Preload these menus to avoid hitches
//MainMenuOptions(0)="GUI2K4.UT2K4SP_Main" // This must match the value for GameEngine.SinglePlayerMenuClass
//MainMenuOptions(1)="GUI2K4.UT2K4ServerBrowser"
//MainMenuOptions(2)="GUI2K4.UT2K4GamePageMP"
//MainMenuOptions(3)="GUI2K4.UT2K4GamePageSP"
//MainMenuOptions(4)="GUI2K4.UT2K4ModsAndDemos"
//MainMenuOptions(5)="GUI2k4.UT2K4SettingsPage"
//MainMenuOptions(6)="GUI2K4.UT2K4QuitPage"
// if _RO_
/*
// end if _RO_
MouseCursors(0)=material'2K4Menus.Cursors.Pointer' // Arrow
MouseCursors(1)=material'2K4Menus.Cursors.ResizeAll' // SizeAll
MouseCursors(2)=material'2K4Menus.Cursors.ResizeSWNE' // Size NE SW
MouseCursors(3)=material'2K4Menus.Cursors.Resize' // Size NS
MouseCursors(4)=material'2K4Menus.Cursors.ResizeNWSE' // Size NW SE
MouseCursors(5)=material'2K4Menus.Cursors.ResizeHorz' // Size WE
MouseCursors(6)=material'2K4Menus.Cursors.Pointer' // Wait
// if _RO_
*/
// end if _RO_
CURSOR_NUM=7
MouseCursorOffset(0)=(X=0,Y=0,Z=0)
MouseCursorOffset(1)=(X=0.5,Y=0.5,Z=0)
MouseCursorOffset(2)=(X=0.5,Y=0.5,Z=0)
MouseCursorOffset(3)=(X=0.5,Y=0.5,Z=0)
MouseCursorOffset(4)=(X=0.5,Y=0.5,Z=0)
MouseCursorOffset(5)=(X=0.5,Y=0.5,Z=0)
MouseCursorOffset(6)=(X=0,Y=0,Z=0)
// Replaceme
MouseOverSound=sound'KF_MenuSnd.msfxMouseOver'
ClickSound=sound'KF_MenuSnd.msfxMouseClick'
EditSound=sound'KF_MenuSnd.msfxEdit'
UpSound=sound'KF_MenuSnd.msfxUp'
DownSound=sound'KF_MenuSnd.msfxDown'
DragSound=sound'KF_MenuSnd.msfxDrag'
FadeSound=sound'KF_MenuSnd.msfxFade'
QuestionMenuClass="GUI2K4.GUI2K4QuestionPage"
AutoLoad(0)=(MenuClassName="GUI2K4.UT2K4InGameChat",bPreInitialize=True)
NetworkMsgMenu="GUI2K4.UT2K4NetworkStatusMsg"
}