2017-10-20 02:00:49 +00:00
|
|
|
Class UI_MidGameMenu extends KFGUI_FloatingWindow;
|
2020-06-26 04:17:32 +00:00
|
|
|
|
2017-10-20 02:00:49 +00:00
|
|
|
var KFGUI_SwitchMenuBar PageSwitcher;
|
2020-06-26 04:17:32 +00:00
|
|
|
var array< class<KFGUI_Base> > Pages;
|
2017-10-20 02:00:49 +00:00
|
|
|
|
2020-06-30 11:22:26 +00:00
|
|
|
var KFGUI_Button AdminButton,SpectateButton,SkipTraderButton;
|
2017-10-20 02:00:49 +00:00
|
|
|
|
|
|
|
var transient KFGUI_Button PrevButton;
|
|
|
|
var transient int NumButtons,NumButtonRows;
|
2020-09-13 16:19:33 +00:00
|
|
|
var transient bool bInitSpectate,bOldSpectate;
|
2017-10-20 02:00:49 +00:00
|
|
|
|
2020-08-12 11:32:24 +00:00
|
|
|
var localized string MapVoteButtonText;
|
|
|
|
var localized string MapVoteButtonToolTip;
|
|
|
|
var localized string SettingsButtonText;
|
|
|
|
var localized string SettingsButtonToolTip;
|
|
|
|
var localized string SkipTraderButtonText;
|
|
|
|
var localized string SkipTraderButtonToolTip;
|
|
|
|
var localized string SpectateButtonText;
|
|
|
|
var localized string SpectateButtonToolTip;
|
|
|
|
var localized string CloseButtonText;
|
|
|
|
var localized string CloseButtonToolTip;
|
|
|
|
var localized string DisconnectButtonText;
|
|
|
|
var localized string DisconnectButtonToolTip;
|
|
|
|
var localized string ExitButtonText;
|
|
|
|
var localized string ExitButtonToolTip;
|
|
|
|
var localized string JoinButtonText;
|
|
|
|
var localized string JoinButtonToolTip;
|
|
|
|
|
2017-10-20 02:00:49 +00:00
|
|
|
function InitMenu()
|
|
|
|
{
|
|
|
|
local int i;
|
|
|
|
local KFGUI_Button B;
|
|
|
|
|
|
|
|
PageSwitcher = KFGUI_SwitchMenuBar(FindComponentID('Pager'));
|
|
|
|
Super(KFGUI_Page).InitMenu();
|
2020-06-26 06:32:40 +00:00
|
|
|
|
2020-08-12 11:32:24 +00:00
|
|
|
AddMenuButton('Mapvote',MapVoteButtonText,MapVoteButtonToolTip);
|
|
|
|
AddMenuButton('Settings',SettingsButtonText,SettingsButtonToolTip);
|
|
|
|
SkipTraderButton = AddMenuButton('SkipTrader',SkipTraderButtonText,SkipTraderButtonToolTip);
|
|
|
|
SpectateButton = AddMenuButton('Spectate',SpectateButtonText,SpectateButtonToolTip);
|
|
|
|
AddMenuButton('Close',CloseButtonText,CloseButtonToolTip);
|
|
|
|
AddMenuButton('Disconnect',DisconnectButtonText,DisconnectButtonToolTip);
|
|
|
|
AddMenuButton('Exit',ExitButtonText,ExitButtonToolTip);
|
2017-10-20 02:00:49 +00:00
|
|
|
|
2020-11-28 20:12:58 +00:00
|
|
|
for (i=0; i<Pages.Length; ++i)
|
2017-10-20 02:00:49 +00:00
|
|
|
{
|
2020-06-26 04:17:32 +00:00
|
|
|
PageSwitcher.AddPage(Pages[i],B).InitMenu();
|
2020-11-28 20:12:58 +00:00
|
|
|
if (Pages[i]==Class'UIP_AdminMenu')
|
2017-10-20 02:00:49 +00:00
|
|
|
AdminButton = B;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
function Timer()
|
|
|
|
{
|
|
|
|
local PlayerReplicationInfo PRI;
|
|
|
|
|
|
|
|
PRI = GetPlayer().PlayerReplicationInfo;
|
2020-11-28 20:12:58 +00:00
|
|
|
if (PRI==None)
|
2017-10-20 02:00:49 +00:00
|
|
|
return;
|
|
|
|
AdminButton.SetDisabled(!PRI.bAdmin && PRI.WorldInfo.NetMode==NM_Client);
|
2020-06-30 11:22:26 +00:00
|
|
|
SkipTraderButton.SetDisabled(!SkipTraderIsAviable(PRI));
|
2020-11-28 20:12:58 +00:00
|
|
|
if (!bInitSpectate || bOldSpectate!=PRI.bOnlySpectator)
|
2017-10-20 02:00:49 +00:00
|
|
|
{
|
|
|
|
bInitSpectate = true;
|
|
|
|
bOldSpectate = PRI.bOnlySpectator;
|
2020-08-12 11:32:24 +00:00
|
|
|
SpectateButton.ButtonText = (bOldSpectate ? JoinButtonText : SpectateButtonText);
|
|
|
|
SpectateButton.ChangeToolTip(bOldSpectate ? JoinButtonToolTip : SpectateButtonToolTip);
|
2017-10-20 02:00:49 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-06-30 11:22:26 +00:00
|
|
|
function bool SkipTraderIsAviable(PlayerReplicationInfo PRI)
|
|
|
|
{
|
|
|
|
local KFGameReplicationInfo KFGRI;
|
|
|
|
local KFPlayerReplicationInfo KFPRI;
|
|
|
|
|
|
|
|
KFPRI = KFPlayerReplicationInfo(PRI);
|
|
|
|
KFGRI = KFGameReplicationInfo(KFPRI.WorldInfo.GRI);
|
2020-09-13 16:19:33 +00:00
|
|
|
|
2020-11-28 20:04:55 +00:00
|
|
|
if (KFGRI == none || KFPRI == none)
|
2020-06-30 12:53:29 +00:00
|
|
|
return false;
|
2020-09-13 16:19:33 +00:00
|
|
|
|
|
|
|
return KFGRI.bMatchHasBegun && KFGRI.bTraderIsOpen && KFPRI.bHasSpawnedIn && !KFPRI.bVotedToSkipTraderTime;
|
2020-06-30 11:22:26 +00:00
|
|
|
}
|
|
|
|
|
2017-10-20 02:00:49 +00:00
|
|
|
function ShowMenu()
|
|
|
|
{
|
|
|
|
Super.ShowMenu();
|
|
|
|
AdminButton.SetDisabled(true);
|
2020-06-30 11:22:26 +00:00
|
|
|
SkipTraderButton.SetDisabled(false);
|
2020-11-28 20:12:58 +00:00
|
|
|
if (GetPlayer().WorldInfo.GRI!=None)
|
2017-10-20 02:00:49 +00:00
|
|
|
WindowTitle = GetPlayer().WorldInfo.GRI.ServerName;
|
|
|
|
|
|
|
|
// Update spectate button info text.
|
|
|
|
Timer();
|
|
|
|
SetTimer(0.5,true);
|
|
|
|
}
|
|
|
|
function CloseMenu()
|
|
|
|
{
|
|
|
|
Super.CloseMenu();
|
|
|
|
}
|
2020-11-28 20:04:55 +00:00
|
|
|
function ButtonClicked(KFGUI_Button Sender)
|
2017-10-20 02:00:49 +00:00
|
|
|
{
|
2020-11-28 20:12:58 +00:00
|
|
|
switch (Sender.ID)
|
2017-10-20 02:00:49 +00:00
|
|
|
{
|
|
|
|
case 'Mapvote':
|
|
|
|
OpenUpMapvote();
|
|
|
|
break;
|
|
|
|
case 'Settings':
|
|
|
|
DoClose();
|
|
|
|
KFPlayerController(GetPlayer()).MyGFxManager.OpenMenu(UI_OptionsSelection);
|
|
|
|
break;
|
|
|
|
case 'Disconnect':
|
|
|
|
GetPlayer().ConsoleCommand("DISCONNECT");
|
|
|
|
break;
|
|
|
|
case 'Close':
|
|
|
|
DoClose();
|
|
|
|
break;
|
|
|
|
case 'Exit':
|
|
|
|
GetPlayer().ConsoleCommand("EXIT");
|
|
|
|
break;
|
|
|
|
case 'Spectate':
|
|
|
|
ExtPlayerController(GetPlayer()).ChangeSpectateMode(!bOldSpectate);
|
|
|
|
DoClose();
|
|
|
|
break;
|
2020-06-26 04:52:58 +00:00
|
|
|
case 'SkipTrader':
|
|
|
|
KFPlayerController(GetPlayer()).RequestSkipTrader();
|
2020-06-30 12:53:29 +00:00
|
|
|
SkipTraderButton.SetDisabled(true);
|
2020-06-26 04:52:58 +00:00
|
|
|
break;
|
2017-10-20 02:00:49 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
final function OpenUpMapvote()
|
|
|
|
{
|
|
|
|
local xVotingReplication R;
|
|
|
|
|
|
|
|
foreach GetPlayer().DynamicActors(class'xVotingReplication',R)
|
|
|
|
R.ClientOpenMapvote();
|
|
|
|
}
|
|
|
|
|
2020-11-28 20:04:55 +00:00
|
|
|
final function KFGUI_Button AddMenuButton(name ButtonID, string Text, optional string ToolTipStr)
|
2017-10-20 02:00:49 +00:00
|
|
|
{
|
|
|
|
local KFGUI_Button B;
|
|
|
|
|
|
|
|
B = new (Self) class'KFGUI_Button';
|
|
|
|
B.ButtonText = Text;
|
|
|
|
B.ToolTip = ToolTipStr;
|
|
|
|
B.OnClickLeft = ButtonClicked;
|
|
|
|
B.OnClickRight = ButtonClicked;
|
|
|
|
B.ID = ButtonID;
|
|
|
|
B.XPosition = 0.05+NumButtons*0.1;
|
|
|
|
B.XSize = 0.099;
|
|
|
|
B.YPosition = 0.92+NumButtonRows*0.04;
|
|
|
|
B.YSize = 0.0399;
|
|
|
|
|
2020-11-28 20:12:58 +00:00
|
|
|
if (NumButtons>0 && PrevButton!=None)
|
2017-10-20 02:00:49 +00:00
|
|
|
PrevButton.ExtravDir = 1;
|
|
|
|
PrevButton = B;
|
2020-11-28 20:12:58 +00:00
|
|
|
if (++NumButtons>8)
|
2017-10-20 02:00:49 +00:00
|
|
|
{
|
|
|
|
++NumButtonRows;
|
|
|
|
NumButtons = 0;
|
|
|
|
}
|
|
|
|
AddComponent(B);
|
|
|
|
return B;
|
|
|
|
}
|
|
|
|
|
|
|
|
defaultproperties
|
|
|
|
{
|
2020-08-12 11:32:24 +00:00
|
|
|
WindowTitle="RPG"
|
2017-10-20 02:00:49 +00:00
|
|
|
XPosition=0.1
|
|
|
|
YPosition=0.1
|
|
|
|
XSize=0.8
|
|
|
|
YSize=0.8
|
|
|
|
|
2020-06-26 04:17:32 +00:00
|
|
|
Pages.Add(Class'UIP_News')
|
|
|
|
Pages.Add(Class'UIP_PerkSelection')
|
|
|
|
Pages.Add(Class'UIP_Settings')
|
|
|
|
Pages.Add(Class'UIP_PlayerSpecs')
|
|
|
|
Pages.Add(Class'UIP_AdminMenu')
|
|
|
|
Pages.Add(Class'UIP_About')
|
|
|
|
Pages.Add(Class'UIP_MiniGame')
|
2017-10-20 02:00:49 +00:00
|
|
|
|
|
|
|
Begin Object Class=KFGUI_SwitchMenuBar Name=MultiPager
|
|
|
|
ID="Pager"
|
|
|
|
XPosition=0.01
|
|
|
|
YPosition=0.08
|
|
|
|
XSize=0.98
|
|
|
|
YSize=0.775
|
|
|
|
BorderWidth=0.04
|
|
|
|
ButtonAxisSize=0.08
|
|
|
|
End Object
|
|
|
|
|
|
|
|
Components.Add(MultiPager)
|
|
|
|
}
|