KF2-Server-Extension/ServerExt/Classes/UI_MidGameMenu.uc

193 lines
4.9 KiB
Ucode
Raw Normal View History

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
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);
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
}
}
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;
}
2017-10-20 02:00:49 +00:00
function ShowMenu()
{
Super.ShowMenu();
AdminButton.SetDisabled(true);
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)
}