202 lines
5.2 KiB
Ucode
202 lines
5.2 KiB
Ucode
class KFGamePageSP extends UT2K4GamePageSP;
|
|
|
|
// Helper for Hack fix for selecting GameType tab
|
|
var bool bFirstChangeCompleted;
|
|
|
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
|
{
|
|
super(UT2K4MainPage).Initcomponent(MyController, MyOwner);
|
|
|
|
RuleInfo = new(None) class'Engine.PlayInfo';
|
|
|
|
p_Game = UT2K4Tab_GameTypeBase(c_Tabs.AddTab(PanelCaption[0],PanelClass[0],,PanelHint[0], true));
|
|
p_Game.OnChangeGameType = ChangeGameType;
|
|
|
|
p_Main = UT2K4Tab_MainBase(c_Tabs.AddTab(PanelCaption[1],PanelClass[1],,PanelHint[1], true));
|
|
p_Game.tp_Main = p_Main;
|
|
|
|
mcRules = KFIAMultiColumnRulesPanel(c_Tabs.AddTab(PanelCaption[2], "KFGUI.KFIAMultiColumnRulesPanel",, PanelHint[2], false));
|
|
p_Mutators = UT2K4Tab_MutatorBase(c_Tabs.AddTab(PanelCaption[3],PanelClass[3],,PanelHint[3], false));
|
|
|
|
b_Back = UT2K4GameFooter(t_Footer).b_Back;
|
|
b_Secondary = UT2K4GameFooter(t_Footer).b_Secondary;
|
|
b_Primary = UT2K4GameFooter(t_Footer).b_Primary;
|
|
|
|
DisableComponent(b_Secondary);
|
|
EnableComponent(b_Primary);
|
|
|
|
// Disable the Sandbox Tab if we're not in Sandbox mode
|
|
if ( class'KFGameType'.default.KFGameLength != 3 )
|
|
{
|
|
c_Tabs.TabStack[2].DisableMe();
|
|
}
|
|
}
|
|
|
|
function InternalOnChange(GUIComponent Sender)
|
|
{
|
|
// HACK: Switch back to the GameType tab if we have more than 1 GameType available
|
|
if ( !bFirstChangeCompleted )
|
|
{
|
|
if ( p_Game.li_Games.Elements.Length > 0 )
|
|
{
|
|
if ( p_Game.li_Games.Elements.Length > 1 )
|
|
{
|
|
bFirstChangeCompleted = true;
|
|
c_Tabs.ActivateTabByName(PanelCaption[0], True);
|
|
}
|
|
|
|
p_Game.li_Games.SetIndex(0);
|
|
}
|
|
}
|
|
|
|
bFirstChangeCompleted = p_Game.li_Games.Elements.Length > 0;
|
|
super.InternalOnChange(Sender);
|
|
}
|
|
|
|
function UpdateBotSetting( string NewValue, moNumericEdit BotControl )
|
|
{
|
|
local GUITabButton BotTab;
|
|
|
|
if ( BotControl == None || NewValue == "" )
|
|
{
|
|
return;
|
|
}
|
|
|
|
BotTab = GetBotTab();
|
|
EnableComponent(BotControl);
|
|
EnableComponent(BotTab);
|
|
}
|
|
|
|
function ChangeGameType(bool bIsCustom)
|
|
{
|
|
if ( GameTypeLocked() )
|
|
return;
|
|
|
|
// We've changed the gametype, so the settings in PlayInfo may no longer be applicable
|
|
// Re-initialize PlayInfo and refresh the applicable pages, then update the maplists
|
|
// and bot configurations
|
|
if ( p_Main != None )
|
|
{
|
|
p_Main.InitGameType();
|
|
if ( p_Mutators != None )
|
|
p_Mutators.SetCurrentGame(p_Main.CurrentGameType);
|
|
}
|
|
|
|
SetRuleInfo();
|
|
|
|
KFMapPage(p_Main).RefreshOptions();
|
|
|
|
// We use the bIsCustom flag to denote whether or not we should move on to the Maps tab
|
|
if ( bIsCustom )
|
|
{
|
|
c_Tabs.ActivateTabByName(PanelCaption[1], True);
|
|
}
|
|
|
|
if ( p_BotConfig != none )
|
|
p_BotConfig.SetupBotLists(p_Main.GetIsTeamGame());
|
|
}
|
|
|
|
// Forces the player to choose a gametype if none has been chosen - prevents having to load any gametypes until one is chosen, and speeds the page load
|
|
function bool GameTypeLocked()
|
|
{
|
|
local int i;
|
|
local GUITabButton tb;
|
|
|
|
// Don't lock if we don't have a gametype tab (for whatever reason)
|
|
if ( p_Game == None )
|
|
return false;
|
|
|
|
if ( Controller.LastGameType == "" )
|
|
{
|
|
for ( i = 0; i < c_Tabs.TabStack.Length; i++ )
|
|
{
|
|
tb = c_Tabs.TabStack[i];
|
|
if ( tb != None && tb != p_Game.MyButton )
|
|
DisableComponent(tb);
|
|
}
|
|
|
|
DisableComponent(b_Primary);
|
|
DisableComponent(b_Secondary);
|
|
|
|
return true;
|
|
}
|
|
|
|
else
|
|
{
|
|
for ( i = 0; i < c_Tabs.TabStack.Length; i++ )
|
|
{
|
|
tb = c_Tabs.TabStack[i];
|
|
if ( tb != None )
|
|
{
|
|
if ( tb.MyPanel == p_Mutators && class'LevelInfo'.static.IsDemoBuild() )
|
|
DisableComponent(tb);
|
|
else EnableComponent(tb);
|
|
}
|
|
}
|
|
|
|
EnableComponent(b_Primary);
|
|
DisableComponent(b_Secondary);
|
|
// Update the botmode stuff (tab button & minplayers property control)
|
|
if ( RuleInfo != None && mcRules != None )
|
|
{
|
|
i = RuleInfo.FindIndex("BotMode");
|
|
if ( i != -1 )
|
|
mcRules.UpdateBotSetting(i);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
PageCaption="Solo"
|
|
Begin Object Class=KFGameFooter Name=SPFooter
|
|
PrimaryCaption="PLAY"
|
|
PrimaryHint="Start A Match With These Settings"
|
|
SecondaryCaption="SPECTATE"
|
|
SecondaryHint="Spectate A Match With These Settings"
|
|
Justification=TXTA_Center
|
|
TextIndent=5
|
|
FontScale=FNS_Small
|
|
WinHeight=0.050
|
|
RenderWeight=0.300000
|
|
TabOrder=8
|
|
ButtonHeight=0.035
|
|
OnPreDraw=SPFooter.InternalOnPreDraw
|
|
End Object
|
|
t_Footer=KFGameFooter'KFGui.KFGamePageSP.SPFooter'
|
|
|
|
Begin Object Class=BackgroundImage Name=PageBackground
|
|
Image=Texture'KillingFloor2HUD.menu.menuBackground'
|
|
ImageStyle=ISTY_Justified
|
|
ImageAlign=IMGA_Center
|
|
RenderWeight=0.010000
|
|
End Object
|
|
i_Background=PageBackground
|
|
|
|
i_bkScan=None
|
|
|
|
PanelCaption(0)="Select Gametype"
|
|
PanelCaption(1)="Select Map"
|
|
PanelCaption(2)="Sandbox"
|
|
PanelCaption(3)="Mutators"
|
|
|
|
PanelHint(0)="Select desired gametype"
|
|
PanelHint(1)="Select maps and difficulty..."
|
|
PanelHint(2)="Configure the current game..."
|
|
PanelHint(3)="Select and configure any mutators to use..."
|
|
|
|
PanelClass(0)="KFGUI.KFTab_GameTypeSP"
|
|
PanelClass(1)="KFGUI.KFMapPage"
|
|
PanelClass(2)="KFGUI.KFRules"
|
|
PanelClass(3)="KFGUI.KFMutatorPage"
|
|
|
|
bRenderWorld=false
|
|
|
|
t_Header=ServerBrowserHeader
|
|
|
|
OnOpen=UT2K4GamePageBase.InternalOnOpen
|
|
}
|
|
|