993 lines
25 KiB
Ucode
993 lines
25 KiB
Ucode
class KFTab_MidGameHelp extends UT2K4Tab_MidGameHelp;
|
|
|
|
//copied stuff
|
|
var automated GUIButton b_Team, b_Settings, b_Browser, b_Quit, b_Favs,
|
|
b_Leave, b_MapVote, b_KickVote, b_MatchSetup, b_Spec;
|
|
|
|
var() noexport bool bTeamGame, bFFAGame, bNetGame;
|
|
|
|
var localized string LeaveMPButtonText, LeaveSPButtonText, SpectateButtonText, JoinGameButtonText;
|
|
var localized array<string> ContextItems, DefaultItems;
|
|
var localized string KickPlayer, BanPlayer;
|
|
|
|
var localized string BuddyText;
|
|
var localized string RedTeam, BlueTeam;
|
|
var string PlayerStyleName;
|
|
var GUIStyles PlayerStyle;
|
|
|
|
function InitComponent(GUIController MyController, GUIComponent MyOwner)
|
|
{
|
|
local string s;
|
|
local int i;
|
|
local eFontScale FS;
|
|
|
|
Super.InitComponent(MyController, MyOwner);
|
|
|
|
s = GetSizingCaption();
|
|
|
|
for ( i = 0; i < Controls.Length; i++ )
|
|
{
|
|
if ( GUIButton(Controls[i]) != None && Controls[i] != b_Team /*&& Controls[i] != PrevHintButton && Controls[i] != NextHintButton*/ )
|
|
{
|
|
GUIButton(Controls[i]).bAutoSize = true;
|
|
GUIButton(Controls[i]).SizingCaption = s;
|
|
GUIButton(Controls[i]).AutoSizePadding.HorzPerc = 0.04;
|
|
GUIButton(Controls[i]).AutoSizePadding.VertPerc = 0.5;
|
|
}
|
|
}
|
|
|
|
PlayerStyle = MyController.GetStyle(PlayerStyleName, fs);
|
|
|
|
sb_GameDesc.ManageComponent(GameDescriptionBox);
|
|
sb_Hints.ManageComponent(HintsBox);
|
|
|
|
PrevHintButton.bBoundToParent=false; PrevHintButton.bScaleToParent=false;
|
|
NextHintButton.bBoundToParent=false; NextHintButton.bScaleToParent=false;
|
|
HintCountLabel.bBoundToParent=false; HintCountLabel.bScaleToParent=false;
|
|
}
|
|
|
|
function ShowPanel(bool bShow)
|
|
{
|
|
Super.ShowPanel(bShow);
|
|
|
|
if ( bShow )
|
|
{
|
|
InitGRI();
|
|
|
|
if ( !bReceivedGameClass )
|
|
{
|
|
SetTimer(1.0, true);
|
|
Timer();
|
|
}
|
|
}
|
|
}
|
|
|
|
function string GetSizingCaption()
|
|
{
|
|
local int i;
|
|
local string s;
|
|
|
|
for ( i = 0; i < Controls.Length; i++ )
|
|
{
|
|
if ( GUIButton(Controls[i]) != none && Controls[i] != b_Team && Controls[i] != PrevHintButton && Controls[i] != NextHintButton)
|
|
{
|
|
if ( s == "" || Len(GUIButton(Controls[i]).Caption) > Len(s) )
|
|
{
|
|
s = GUIButton(Controls[i]).Caption;
|
|
}
|
|
}
|
|
}
|
|
|
|
return s;
|
|
}
|
|
|
|
function GameReplicationInfo GetGRI()
|
|
{
|
|
return PlayerOwner().GameReplicationInfo;
|
|
}
|
|
|
|
function InitGRI()
|
|
{
|
|
local PlayerController PC;
|
|
local GameReplicationInfo GRI;
|
|
|
|
GRI = GetGRI();
|
|
PC = PlayerOwner();
|
|
|
|
if ( PC == none || PC.PlayerReplicationInfo == none || GRI == none )
|
|
{
|
|
return;
|
|
}
|
|
|
|
bInit = False;
|
|
|
|
if ( !bTeamGame && !bFFAGame )
|
|
{
|
|
if ( GRI.bTeamGame )
|
|
{
|
|
bTeamGame = True;
|
|
}
|
|
else if ( !(GRI.GameClass ~= "Engine.GameInfo") )
|
|
{
|
|
bFFAGame = True;
|
|
}
|
|
}
|
|
|
|
bNetGame = PC.Level.NetMode != NM_StandAlone;
|
|
|
|
if ( bNetGame )
|
|
{
|
|
b_Leave.Caption = LeaveMPButtonText;
|
|
}
|
|
else
|
|
{
|
|
b_Leave.Caption = LeaveSPButtonText;
|
|
}
|
|
|
|
if ( PC.PlayerReplicationInfo.bOnlySpectator )
|
|
{
|
|
b_Spec.Caption = JoinGameButtonText;
|
|
}
|
|
else
|
|
{
|
|
b_Spec.Caption = SpectateButtonText;
|
|
}
|
|
|
|
SetupGroups();
|
|
//InitLists();
|
|
}
|
|
|
|
function float ItemHeight(Canvas C)
|
|
{
|
|
local float XL, YL, H;
|
|
local eFontScale f;
|
|
|
|
if ( bTeamGame )
|
|
{
|
|
f=FNS_Medium;
|
|
}
|
|
else
|
|
{
|
|
f=FNS_Large;
|
|
}
|
|
|
|
PlayerStyle.TextSize(C, MSAT_Blurry, "Wqz, ", XL, H, F);
|
|
|
|
if ( C.ClipX > 640 && bNetGame )
|
|
{
|
|
PlayerStyle.TextSize(C, MSAT_Blurry, "Wqz, ", XL, YL, FNS_Small);
|
|
}
|
|
|
|
H += YL;
|
|
H += (H * 0.2);
|
|
|
|
return h;
|
|
}
|
|
|
|
function SetupGroups()
|
|
{
|
|
local int i;
|
|
local PlayerController PC;
|
|
|
|
PC = PlayerOwner();
|
|
|
|
if ( bTeamGame )
|
|
{
|
|
//RemoveComponent(lb_FFA, True);
|
|
//RemoveComponent(sb_FFA, true);
|
|
|
|
if ( PC.GameReplicationInfo != None && PC.GameReplicationInfo.bNoTeamChanges )
|
|
{
|
|
RemoveComponent(b_Team,true);
|
|
}
|
|
|
|
//lb_FFA = None;
|
|
}
|
|
else if ( bFFAGame )
|
|
{
|
|
//RemoveComponent(i_JoinRed, true);
|
|
//RemoveComponent(lb_Red, true);
|
|
//RemoveComponent(sb_Red, true);
|
|
RemoveComponent(b_Team, true);
|
|
}
|
|
else
|
|
{
|
|
for ( i = 0; i < Controls.Length; i++ )
|
|
{
|
|
if ( Controls[i] == b_Team ||
|
|
Controls[i] == b_Settings ||
|
|
Controls[i] == b_Browser ||
|
|
Controls[i] == b_Quit ||
|
|
Controls[i] == b_Favs ||
|
|
Controls[i] == b_Leave ||
|
|
Controls[i] == b_MapVote ||
|
|
Controls[i] == b_KickVote ||
|
|
Controls[i] == b_MatchSetup ||
|
|
Controls[i] == b_Spec )
|
|
{
|
|
RemoveComponent(Controls[i], True);
|
|
}
|
|
}
|
|
}
|
|
|
|
if ( PC.Level.NetMode != NM_Client )
|
|
{
|
|
RemoveComponent(b_Favs);
|
|
RemoveComponent(b_Browser);
|
|
}
|
|
else if ( CurrentServerIsInFavorites() )
|
|
{
|
|
DisableComponent(b_Favs);
|
|
}
|
|
|
|
if ( PC.Level.NetMode == NM_StandAlone )
|
|
{
|
|
RemoveComponent(b_MapVote, True);
|
|
RemoveComponent(b_MatchSetup, True);
|
|
RemoveComponent(b_KickVote, True);
|
|
}
|
|
else if ( PC.VoteReplicationInfo != None )
|
|
{
|
|
if ( !PC.VoteReplicationInfo.MapVoteEnabled() )
|
|
{
|
|
RemoveComponent(b_MapVote,True);
|
|
}
|
|
|
|
if ( !PC.VoteReplicationInfo.KickVoteEnabled() )
|
|
{
|
|
RemoveComponent(b_KickVote);
|
|
}
|
|
|
|
if ( !PC.VoteReplicationInfo.MatchSetupEnabled() )
|
|
{
|
|
RemoveComponent(b_MatchSetup);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
RemoveComponent(b_MapVote);
|
|
RemoveComponent(b_KickVote);
|
|
RemoveComponent(b_MatchSetup);
|
|
}
|
|
|
|
RemapComponents();
|
|
}
|
|
|
|
function SetButtonPositions(Canvas C)
|
|
{
|
|
local int i, j, ButtonsPerRow, ButtonsLeftInRow, NumButtons;
|
|
local float Width, Height, Center, X, Y, YL, ButtonSpacing;
|
|
|
|
Width = b_Settings.ActualWidth();
|
|
Height = b_Settings.ActualHeight();
|
|
Center = ActualLeft() + (ActualWidth() / 2.0);
|
|
|
|
ButtonSpacing = Width * 0.05;
|
|
YL = Height * 1.2;
|
|
Y = b_Settings.ActualTop();
|
|
|
|
ButtonsPerRow = ActualWidth() / (Width + ButtonSpacing);
|
|
ButtonsLeftInRow = ButtonsPerRow;
|
|
|
|
for ( i = 0; i < Components.Length; i++)
|
|
{
|
|
if ( Components[i].bVisible && GUIButton(Components[i]) != none && Components[i] != b_Team && Components[i] != PrevHintButton && Components[i] != NextHintButton )
|
|
{
|
|
NumButtons++;
|
|
}
|
|
}
|
|
|
|
if ( NumButtons < ButtonsPerRow )
|
|
{
|
|
X = Center - (((Width * float(NumButtons)) + (ButtonSpacing * float(NumButtons - 1))) * 0.5);
|
|
}
|
|
else if ( ButtonsPerRow > 1 )
|
|
{
|
|
X = Center - (((Width * float(ButtonsPerRow)) + (ButtonSpacing * float(ButtonsPerRow - 1))) * 0.5);
|
|
}
|
|
else
|
|
{
|
|
X = Center - Width / 2.0;
|
|
}
|
|
|
|
for ( i = 0; i < Components.Length; i++)
|
|
{
|
|
if ( !Components[i].bVisible || GUIButton(Components[i]) == none || Components[i]==b_Team || Components[i] == PrevHintButton || Components[i] == NextHintButton )
|
|
{
|
|
continue;
|
|
}
|
|
|
|
Components[i].SetPosition( X, Y, Width, Height, true );
|
|
|
|
if ( --ButtonsLeftInRow > 0 )
|
|
{
|
|
X += Width + ButtonSpacing;
|
|
}
|
|
else
|
|
{
|
|
Y += YL;
|
|
|
|
for ( j = i + 1; j < Components.Length && ButtonsLeftInRow < ButtonsPerRow; j++)
|
|
{
|
|
if ( Components[i].bVisible && GUIButton(Components[i]) != none && Components[i] != b_Team && Controls[i] != PrevHintButton && Controls[i] != NextHintButton )
|
|
{
|
|
ButtonsLeftInRow++;
|
|
}
|
|
}
|
|
|
|
if ( ButtonsLeftInRow > 1 )
|
|
{
|
|
X = Center - (((Width * float(ButtonsLeftInRow)) + (ButtonSpacing * float(ButtonsLeftInRow - 1))) * 0.5);
|
|
}
|
|
else
|
|
{
|
|
X = Center - Width / 2.0;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// See if we already have this server in our favorites
|
|
function bool CurrentServerIsInFavorites()
|
|
{
|
|
local ExtendedConsole.ServerFavorite Fav;
|
|
local string address,portString;
|
|
|
|
// Get current network address
|
|
if ( PlayerOwner() == None )
|
|
{
|
|
return true;
|
|
}
|
|
|
|
address = PlayerOwner().GetServerNetworkAddress();
|
|
|
|
if( address == "" )
|
|
{
|
|
return true; // slightly hacky - dont want to add "none"!
|
|
}
|
|
|
|
// Parse text to find IP and possibly port number
|
|
if ( Divide(address, ":", Fav.IP, portstring) )
|
|
{
|
|
Fav.Port = int(portString);
|
|
}
|
|
else
|
|
{
|
|
Fav.IP = address;
|
|
}
|
|
|
|
return class'ExtendedConsole'.static.InFavorites(Fav);
|
|
}
|
|
|
|
function bool ButtonClicked(GUIComponent Sender)
|
|
{
|
|
local PlayerController PC;
|
|
local GUIController C;
|
|
|
|
C = Controller;
|
|
|
|
PC = PlayerOwner();
|
|
|
|
/*if ( Sender == i_JoinRed )
|
|
{
|
|
//Join Red team
|
|
if ( PC.PlayerReplicationInfo == None || PC.PlayerReplicationInfo.Team == none ||
|
|
PC.PlayerReplicationInfo.Team.TeamIndex != 0 )
|
|
{
|
|
PC.ChangeTeam(0);
|
|
}
|
|
|
|
Controller.CloseMenu(false);
|
|
}
|
|
*/
|
|
if ( Sender == b_Settings )
|
|
{
|
|
//Settings
|
|
Controller.OpenMenu(Controller.GetSettingsPage());
|
|
}
|
|
else if ( Sender == b_Browser )
|
|
{
|
|
//Server browser
|
|
Controller.OpenMenu("KFGUI.KFServerBrowser");
|
|
}
|
|
else if ( Sender == b_Leave )
|
|
{
|
|
//Forfeit/Disconnect
|
|
PC.ConsoleCommand("DISCONNECT");
|
|
KFGUIController(C).ReturnToMainMenu();
|
|
}
|
|
else if ( Sender == b_Favs )
|
|
{
|
|
//Add this server to favorites
|
|
PC.ConsoleCommand( "ADDCURRENTTOFAVORITES" );
|
|
b_Favs.MenuStateChange(MSAT_Disabled);
|
|
}
|
|
else if ( Sender == b_Quit )
|
|
{
|
|
//Quit game
|
|
Controller.OpenMenu(Controller.GetQuitPage());
|
|
}
|
|
else if ( Sender == b_MapVote )
|
|
{
|
|
//Map voting
|
|
Controller.OpenMenu(Controller.MapVotingMenu);
|
|
}
|
|
else if ( Sender == b_KickVote )
|
|
{
|
|
//Kick voting
|
|
Controller.OpenMenu(Controller.KickVotingMenu);
|
|
}
|
|
else if ( Sender == b_MatchSetup )
|
|
{
|
|
//Match setup
|
|
Controller.OpenMenu(Controller.MatchSetupMenu);
|
|
}
|
|
else if ( Sender == b_Spec )
|
|
{
|
|
Controller.CloseMenu();
|
|
|
|
//Spectate/rejoin
|
|
if ( PC.PlayerReplicationInfo.bOnlySpectator )
|
|
{
|
|
PC.BecomeActivePlayer();
|
|
}
|
|
else
|
|
{
|
|
PC.BecomeSpectator();
|
|
}
|
|
}
|
|
else if (Sender == PrevHintButton)
|
|
{
|
|
CurrentHintIndex--;
|
|
if (CurrentHintIndex < 0)
|
|
CurrentHintIndex = AllGameHints.length - 1;
|
|
}
|
|
else if (Sender == NextHintButton)
|
|
{
|
|
CurrentHintIndex++;
|
|
if (CurrentHintIndex >= AllGameHints.length)
|
|
CurrentHintIndex = 0;
|
|
}
|
|
|
|
HintsBox.SetContent(AllGameHints[CurrentHintIndex]);
|
|
HintCountLabel.Caption = string(CurrentHintIndex + 1) @ "/" @ string(AllGameHints.length);
|
|
|
|
return true;
|
|
}
|
|
|
|
function bool InternalOnPreDraw(Canvas C)
|
|
{
|
|
local GameReplicationInfo GRI;
|
|
|
|
GRI = GetGRI();
|
|
|
|
if ( GRI != none )
|
|
{
|
|
if ( bInit )
|
|
{
|
|
InitGRI();
|
|
}
|
|
|
|
/*
|
|
if ( bTeamGame )
|
|
{
|
|
if ( PlayerOwner().PlayerReplicationInfo.Team != none )
|
|
{
|
|
sb_Red.HeaderBase = texture'InterfaceArt_tex.Menu.RODisplay';
|
|
}
|
|
}
|
|
|
|
sb_Red.SetPosition((ActualWidth() / 2.0) - ((sb_Red.WinWidth * ActualWidth()) / 2.0), sb_Red.WinTop, sb_Red.WinWidth, sb_Red.WinHeight);
|
|
*/
|
|
|
|
SetButtonPositions(C);
|
|
//UpdatePlayerLists();
|
|
|
|
if ( (PlayerOwner().myHUD == None || !PlayerOwner().myHUD.IsInCinematic()) && GRI != none && GRI.bMatchHasBegun && !PlayerOwner().IsInState('GameEnded') )
|
|
{
|
|
EnableComponent(b_Spec);
|
|
}
|
|
else
|
|
{
|
|
DisableComponent(b_Spec);
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function bool ContextMenuOpened(GUIContextMenu Menu)
|
|
{
|
|
local GUIList List;
|
|
local PlayerReplicationInfo PRI;
|
|
local byte Restriction;
|
|
local GameReplicationInfo GRI;
|
|
|
|
GRI = GetGRI();
|
|
|
|
if ( GRI == None )
|
|
{
|
|
return false;
|
|
}
|
|
|
|
List = GUIList(Controller.ActiveControl);
|
|
|
|
if ( List == None )
|
|
{
|
|
log(Name @ "ContextMenuOpened active control was not a list - active:" $ Controller.ActiveControl.Name);
|
|
return False;
|
|
}
|
|
|
|
if ( !List.IsValid() )
|
|
{
|
|
return False;
|
|
}
|
|
|
|
PRI = GRI.FindPlayerByID(int(List.GetExtra()));
|
|
|
|
if ( PRI == None || PRI.bBot || PlayerIDIsMine(PRI.PlayerID) )
|
|
{
|
|
return False;
|
|
}
|
|
|
|
Restriction = PlayerOwner().ChatManager.GetPlayerRestriction(PRI.PlayerID);
|
|
|
|
if ( bool(Restriction & 1) )
|
|
{
|
|
Menu.ContextItems[0] = ContextItems[0];
|
|
}
|
|
else
|
|
{
|
|
Menu.ContextItems[0] = DefaultItems[0];
|
|
}
|
|
|
|
if ( bool(Restriction & 2) )
|
|
{
|
|
Menu.ContextItems[1] = ContextItems[1];
|
|
}
|
|
else
|
|
{
|
|
Menu.ContextItems[1] = DefaultItems[1];
|
|
}
|
|
|
|
if ( bool(Restriction & 4) )
|
|
{
|
|
Menu.ContextItems[2] = ContextItems[2];
|
|
}
|
|
else
|
|
{
|
|
Menu.ContextItems[2] = DefaultItems[2];
|
|
}
|
|
|
|
if ( bool(Restriction & 8) )
|
|
{
|
|
Menu.ContextItems[3] = ContextItems[3];
|
|
}
|
|
else
|
|
{
|
|
Menu.ContextItems[3] = DefaultItems[3];
|
|
}
|
|
|
|
Menu.ContextItems[4] = "-";
|
|
Menu.ContextItems[5] = BuddyText;
|
|
|
|
if ( PlayerOwner().PlayerReplicationInfo.bAdmin )
|
|
{
|
|
Menu.ContextItems[6] = "-";
|
|
Menu.ContextItems[7] = KickPlayer $ "["$List.Get() $ "]";
|
|
Menu.ContextItems[8] = BanPlayer $ "["$List.Get() $ "]";
|
|
}
|
|
else if ( Menu.ContextItems.Length > 6 )
|
|
{
|
|
Menu.ContextItems.Remove(6,Menu.ContextItems.Length - 6);
|
|
}
|
|
|
|
return True;
|
|
}
|
|
|
|
function ContextClick(GUIContextMenu Menu, int ClickIndex)
|
|
{
|
|
local bool bUndo;
|
|
local byte Type;
|
|
local GUIList List;
|
|
local PlayerController PC;
|
|
local PlayerReplicationInfo PRI;
|
|
local GameReplicationInfo GRI;
|
|
|
|
GRI = GetGRI();
|
|
|
|
if ( GRI == None )
|
|
{
|
|
return;
|
|
}
|
|
|
|
PC = PlayerOwner();
|
|
bUndo = Menu.ContextItems[ClickIndex] == ContextItems[ClickIndex];
|
|
List = GUIList(Controller.ActiveControl);
|
|
|
|
if ( List == None )
|
|
{
|
|
return;
|
|
}
|
|
|
|
PRI = GRI.FindPlayerById(int(List.GetExtra()));
|
|
|
|
if ( PRI == None )
|
|
{
|
|
return;
|
|
}
|
|
|
|
if ( ClickIndex > 5 ) // Admin stuff
|
|
{
|
|
switch ( ClickIndex )
|
|
{
|
|
case 6:
|
|
case 7: PC.AdminCommand("admin kick"@List.GetExtra()); break;
|
|
case 8: PC.AdminCommand("admin kickban"@List.GetExtra()); break;
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
if ( ClickIndex > 3 )
|
|
{
|
|
Controller.AddBuddy(List.Get());
|
|
|
|
return;
|
|
}
|
|
|
|
Type = 1 << ClickIndex;
|
|
|
|
if ( bUndo )
|
|
{
|
|
if ( PC.ChatManager.ClearRestrictionID(PRI.PlayerID, Type) )
|
|
{
|
|
PC.ServerChatRestriction(PRI.PlayerID, PC.ChatManager.GetPlayerRestriction(PRI.PlayerID));
|
|
ModifiedChatRestriction(Self, PRI.PlayerID);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
if ( PC.ChatManager.AddRestrictionID(PRI.PlayerID, Type) )
|
|
{
|
|
PC.ServerChatRestriction(PRI.PlayerID, PC.ChatManager.GetPlayerRestriction(PRI.PlayerID));
|
|
ModifiedChatRestriction(Self, PRI.PlayerID);
|
|
}
|
|
}
|
|
}
|
|
|
|
function Timer()
|
|
{
|
|
local PlayerController PC;
|
|
local int i;
|
|
|
|
PC = PlayerOwner();
|
|
if (PC != None && PC.GameReplicationInfo != None && PC.GameReplicationInfo.GameClass != "")
|
|
{
|
|
GameClass = class<GameInfo>(DynamicLoadObject(PC.GameReplicationInfo.GameClass, class'Class'));
|
|
if (GameClass != None)
|
|
{
|
|
//get game description and hints from game class
|
|
GameDescriptionBox.SetContent(GameClass.default.Description);
|
|
AllGameHints = GameClass.static.GetAllLoadHints();
|
|
if (AllGameHints.length > 0)
|
|
{
|
|
for (i = 0; i < AllGameHints.length; i++)
|
|
{
|
|
AllGameHints[i] = GameClass.static.ParseLoadingHint(AllGameHints[i], PC, HintsBox.Style.FontColors[HintsBox.MenuState]);
|
|
if (AllGameHints[i] == "")
|
|
{
|
|
AllGameHints.Remove(i, 1);
|
|
i--;
|
|
}
|
|
}
|
|
HintsBox.SetContent(AllGameHints[CurrentHintIndex]);
|
|
HintCountLabel.Caption = string(CurrentHintIndex + 1) @ "/" @ string(AllGameHints.length);
|
|
EnableComponent(PrevHintButton);
|
|
EnableComponent(NextHintButton);
|
|
}
|
|
|
|
KillTimer();
|
|
bReceivedGameClass = true;
|
|
}
|
|
}
|
|
}
|
|
/*
|
|
function bool ButtonClicked(GUIComponent Sender)
|
|
{
|
|
if (Sender == PrevHintButton)
|
|
{
|
|
CurrentHintIndex--;
|
|
if (CurrentHintIndex < 0)
|
|
CurrentHintIndex = AllGameHints.length - 1;
|
|
}
|
|
else if (Sender == NextHintButton)
|
|
{
|
|
CurrentHintIndex++;
|
|
if (CurrentHintIndex >= AllGameHints.length)
|
|
CurrentHintIndex = 0;
|
|
}
|
|
|
|
HintsBox.SetContent(AllGameHints[CurrentHintIndex]);
|
|
HintCountLabel.Caption = string(CurrentHintIndex + 1) @ "/" @ string(AllGameHints.length);
|
|
|
|
return true;
|
|
}
|
|
*/
|
|
function bool FixUp(Canvas C)
|
|
{
|
|
local float t,h,l,w,xl;
|
|
|
|
h = 18;
|
|
t = sb_Hints.ActualTop() + sb_Hints.ActualHeight() - 50;
|
|
|
|
PrevHintButton.WinLeft = sb_Hints.ActualLeft() + 40;
|
|
PrevHintButton.WinTop = t;
|
|
PrevHintButton.WinHeight=h;
|
|
|
|
NextHintButton.WinLeft = sb_Hints.ActualLeft() + sb_Hints.ActualWidth() - 40 - NextHintButton.ActualWidth();
|
|
NextHintButton.WinTop = t;
|
|
NextHintButton.WinHeight=h;
|
|
|
|
l = PrevHintButton.ActualLeft() + PrevHintButton.ActualWidth();
|
|
w = NextHintButton.ActualLeft() - L;
|
|
|
|
XL = HintCountLabel.ActualWidth();
|
|
l = l + (w/2) - (xl/2);
|
|
HintCountLabel.WinLeft=l;
|
|
HintCountLabel.WinTop=t;
|
|
HintCountLabel.WinWidth = xl;
|
|
HintCountLabel.WinHeight=h;
|
|
|
|
InternalOnPreDraw(C);
|
|
|
|
return false;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
LeaveMPButtonText="Disconnect"
|
|
LeaveSPButtonText="Forfeit"
|
|
|
|
SpectateButtonText="Spectate"
|
|
JoinGameButtonText="Join"
|
|
|
|
// OnRightClick=RightClick
|
|
|
|
ContextItems(0)="Unignore text"
|
|
ContextItems(1)="Unignore speech"
|
|
ContextItems(2)="Unignore voice chat"
|
|
ContextItems(3)="Unban from voice chat"
|
|
|
|
DefaultItems(0)="Ignore text"
|
|
DefaultItems(1)="Ignore speech"
|
|
DefaultItems(2)="Ignore voice chat"
|
|
DefaultItems(3)="Ban from voice chat"
|
|
|
|
PlayerStyleName="TextLabel"
|
|
//OnPreDraw=InternalOnPreDraw
|
|
|
|
KickPlayer="Kick "
|
|
BanPlayer="Ban "
|
|
|
|
OnPreDraw=KFTab_MidGameHelp.FixUp
|
|
|
|
Begin Object Class=AltSectionBackground Name=sbGameDesc
|
|
bFillClient=True
|
|
Caption="Game Description"
|
|
WinTop=0.020438
|
|
WinLeft=0.023625
|
|
WinWidth=0.944875
|
|
WinHeight=0.455783
|
|
bBoundToParent=True
|
|
bScaleToParent=True
|
|
OnPreDraw=sbGameDesc.InternalPreDraw
|
|
End Object
|
|
sb_GameDesc=AltSectionBackground'KFGui.KFTab_MidGameHelp.sbGameDesc'
|
|
|
|
Begin Object Class=AltSectionBackground Name=sbHints
|
|
bFillClient=True
|
|
Caption="Helpful Hints"
|
|
WinTop=0.482921
|
|
WinLeft=0.023625
|
|
WinWidth=0.944875
|
|
WinHeight=0.390000
|
|
bBoundToParent=True
|
|
bScaleToParent=True
|
|
OnPreDraw=sbHints.InternalPreDraw
|
|
End Object
|
|
sb_Hints=AltSectionBackground'KFGui.KFTab_MidGameHelp.sbHints'
|
|
|
|
Begin Object Class=GUIScrollTextBox Name=InfoText
|
|
bNoTeletype=true
|
|
CharDelay=0.000050
|
|
EOLDelay=0.000001
|
|
TextAlign=TXTA_Center
|
|
OnCreateComponent=InfoText.InternalOnCreateComponent
|
|
WinTop=0.203750
|
|
WinHeight=0.316016
|
|
bBoundToParent=True
|
|
bScaleToParent=True
|
|
bNeverFocus=True
|
|
Separator="#"
|
|
End Object
|
|
GameDescriptionBox=GUIScrollTextBox'KFGui.KFTab_MidGameHelp.InfoText'
|
|
|
|
Begin Object Class=GUIScrollTextBox Name=HintText
|
|
bNoTeletype=true
|
|
CharDelay=0.000010
|
|
EOLDelay=0.000001
|
|
TextAlign=TXTA_Center
|
|
OnCreateComponent=HintText.InternalOnCreateComponent
|
|
WinTop=0.653750
|
|
WinHeight=0.266016
|
|
bBoundToParent=True
|
|
bScaleToParent=True
|
|
bNeverFocus=True
|
|
End Object
|
|
HintsBox=GUIScrollTextBox'KFGui.KFTab_MidGameHelp.HintText'
|
|
|
|
Begin Object Class=GUILabel Name=HintCount
|
|
TextAlign=TXTA_Center
|
|
TextColor=(B=255,G=255,R=255)
|
|
WinTop=0.900000
|
|
WinLeft=0.300000
|
|
WinWidth=0.400000
|
|
WinHeight=32.000000
|
|
End Object
|
|
HintCountLabel=GUILabel'KFGui.KFTab_MidGameHelp.HintCount'
|
|
|
|
Begin Object Class=GUIButton Name=PrevHint
|
|
Caption="Previous Hint"
|
|
bAutoSize=True
|
|
WinTop=0.750000
|
|
WinLeft=0.131500
|
|
WinWidth=0.226801
|
|
WinHeight=0.042125
|
|
TabOrder=0
|
|
RenderWeight=2.0
|
|
OnClick=KFTab_MidGameHelp.ButtonClicked
|
|
OnKeyEvent=PrevHint.InternalOnKeyEvent
|
|
End Object
|
|
PrevHintButton=GUIButton'KFGui.KFTab_MidGameHelp.PrevHint'
|
|
|
|
Begin Object Class=GUIButton Name=NextHint
|
|
Caption="Next Hint"
|
|
bAutoSize=True
|
|
WinTop=0.750000
|
|
WinLeft=0.698425
|
|
WinWidth=0.159469
|
|
WinHeight=0.042125
|
|
TabOrder=1
|
|
RenderWeight=2.0
|
|
OnClick=KFTab_MidGameHelp.ButtonClicked
|
|
OnKeyEvent=NextHint.InternalOnKeyEvent
|
|
End Object
|
|
NextHintButton=GUIButton'KFGui.KFTab_MidGameHelp.NextHint'
|
|
|
|
Begin Object Class=GUIButton Name=SettingsButton
|
|
Caption="Settings"
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.147268
|
|
WinHeight=0.048769
|
|
WinLeft=0.194420
|
|
WinTop=0.878657
|
|
TabOrder=0
|
|
bBoundToParent=true
|
|
bScaleToParent=true
|
|
End Object
|
|
b_Settings=SettingsButton
|
|
|
|
Begin Object Class=GUIButton Name=BrowserButton
|
|
Caption="Server Browser"
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.20000
|
|
WinHeight=0.05000
|
|
WinLeft=0.375000
|
|
WinTop=0.85000//0.675
|
|
bAutoSize=True
|
|
TabOrder=1
|
|
bBoundToParent=true
|
|
bScaleToParent=true
|
|
End Object
|
|
b_Browser=BrowserButton
|
|
|
|
Begin Object Class=GUIButton Name=LeaveMatchButton
|
|
Caption=""
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.20000
|
|
WinHeight=0.05000
|
|
WinLeft=0.7250000
|
|
WinTop=0.87//0.750
|
|
bAutoSize=True
|
|
TabOrder=10
|
|
bBoundToParent=true
|
|
bScaleToParent=true
|
|
End Object
|
|
b_Leave=LeaveMatchButton
|
|
|
|
Begin Object Class=GUIButton Name=FavoritesButton
|
|
Caption="Add to Favs"
|
|
Hint="Add this server to your Favorites"
|
|
StyleName="SquareButton"
|
|
WinWidth=0.20000
|
|
WinHeight=0.05000
|
|
WinLeft=0.02500
|
|
WinTop=0.870
|
|
bBoundToParent=true
|
|
bScaleToParent=true
|
|
OnClick=ButtonClicked
|
|
bAutoSize=True
|
|
TabOrder=3
|
|
End Object
|
|
b_Favs=FavoritesButton
|
|
|
|
Begin Object Class=GUIButton Name=QuitGameButton
|
|
Caption="Exit Game"
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.20000
|
|
WinHeight=0.05000
|
|
WinLeft=0.725000
|
|
WinTop=0.870
|
|
bAutoSize=True
|
|
TabOrder=11
|
|
End Object
|
|
b_Quit=QuitGameButton
|
|
|
|
Begin Object Class=GUIButton Name=MapVotingButton
|
|
Caption="Map Voting"
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.20000
|
|
WinHeight=0.050000
|
|
WinLeft=0.025000
|
|
WinTop=0.890
|
|
bAutoSize=True
|
|
TabOrder=5
|
|
End Object
|
|
b_MapVote=MapVotingButton
|
|
|
|
Begin Object Class=GUIButton Name=KickVotingButton
|
|
Caption="Kick Voting"
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.20000
|
|
WinHeight=0.050000
|
|
WinLeft=0.375000
|
|
WinTop=0.890
|
|
bAutoSize=True
|
|
TabOrder=6
|
|
End Object
|
|
b_KickVote=KickVotingButton
|
|
|
|
Begin Object Class=GUIButton Name=MatchSetupButton
|
|
Caption="Match Setup"
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.20000
|
|
WinHeight=0.050000
|
|
WinLeft=0.725000
|
|
WinTop=0.890
|
|
bAutoSize=True
|
|
TabOrder=7
|
|
End Object
|
|
b_MatchSetup=MatchSetupButton
|
|
|
|
Begin Object Class=GUIButton Name=SpectateButton
|
|
Caption="Spectate"
|
|
StyleName="SquareButton"
|
|
OnClick=ButtonClicked
|
|
WinWidth=0.20000
|
|
WinHeight=0.050000
|
|
WinLeft=0.725000
|
|
WinTop=0.890
|
|
bAutoSize=True
|
|
TabOrder=9
|
|
End Object
|
|
b_Spec=SpectateButton
|
|
}
|