828 lines
29 KiB
Ucode
828 lines
29 KiB
Ucode
class TSCLobbyMenu extends ScrnLobbyMenu
|
|
dependson(TSCLobbyFooter);
|
|
|
|
#exec OBJ LOAD FILE=TSC_T.utx
|
|
|
|
var automated GUIImage TSCLogo;
|
|
|
|
var automated GUIButton TeamButtons[2];
|
|
var automated GUIImage TeamLogos[2];
|
|
var automated GUIImage TeamTitles[2];
|
|
|
|
var automated GUILabel l_PlayerTeam;
|
|
var automated GUILabel l_HDmgCaption;
|
|
var automated GUILabel l_HDmgInfo;
|
|
|
|
var localized string ReadyString, UnreadyString;
|
|
var localized string strJoin, strJoined;
|
|
var localized string strCurrentWave, strWaves;
|
|
var localized string strTeam;
|
|
var localized string strNotTeamMember;
|
|
|
|
var localized string WaitingForMorePlayers;
|
|
var localized string TeamNames[2];
|
|
|
|
var localized string strHDmg;
|
|
var array<localized string> HDmgNames, HDmgInfo;
|
|
|
|
|
|
var array<FPlayerBoxEntry> BluePlayerBoxes;
|
|
|
|
|
|
var TeamInfo MyTeam;
|
|
|
|
// stats
|
|
var int RedPlayers, BluePlayers;
|
|
|
|
|
|
event Timer()
|
|
{
|
|
local TSCGameReplicationInfo GRI;
|
|
local PlayerReplicationInfo PRI;
|
|
|
|
|
|
PRI = PlayerOwner().PlayerReplicationInfo;
|
|
if ( PRI != none ) {
|
|
if ( PRI.bOnlySpectator ) {
|
|
label_TimeOutCounter.Caption = "You are a spectator.";
|
|
Return;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
GRI = TSCGameReplicationInfo(PlayerOwner().GameReplicationInfo);
|
|
if ( GRI==None )
|
|
label_TimeOutCounter.Caption = WaitingForServerStatus;
|
|
else if ( GRI.Level.NetMode != NM_Standalone && (RedPlayers == 0 || BluePlayers == 0
|
|
|| RedPlayers+BluePlayers < GRI.MinNetPlayers) )
|
|
label_TimeOutCounter.Caption = WaitingForMorePlayers;
|
|
else if ( GRI.LobbyTimeout <= 0 )
|
|
label_TimeOutCounter.Caption = WaitingForOtherPlayers;
|
|
else
|
|
label_TimeOutCounter.Caption = AutoCommence$":" @ GRI.LobbyTimeout;
|
|
|
|
if ( GRI != None ) {
|
|
l_HDmgCaption.Caption = strHDmg $ HdmgNames[GRI.HumanDamageMode];
|
|
l_HDmgInfo.Caption = HdmgInfo[GRI.HumanDamageMode];
|
|
}
|
|
|
|
UpdateButtonCaptions();
|
|
}
|
|
|
|
function TeamChanged()
|
|
{
|
|
local ScrnPlayerController PC;
|
|
local string CN;
|
|
|
|
PC = ScrnPlayerController(PlayerOwner());
|
|
if ( PC == none )
|
|
return;
|
|
|
|
CN = PC.PlayerReplicationInfo.CharacterName;
|
|
if ( !PC.ValidateCharacter(CN) )
|
|
PC.ChangeCharacter(CN);
|
|
}
|
|
|
|
function bool OnTeamButtonClick(GUIComponent Sender)
|
|
{
|
|
local KFPlayerController PC;
|
|
local int TeamIndex;
|
|
|
|
PC = KFPlayerController(PlayerOwner());
|
|
if ( PC == none )
|
|
return true;
|
|
|
|
if ( Sender == TeamButtons[1] )
|
|
TeamIndex = 1;
|
|
else
|
|
TeamIndex = 0;
|
|
|
|
if ( PC.PlayerReplicationInfo == none || PC.PlayerReplicationInfo.Team == none
|
|
|| PC.PlayerReplicationInfo.Team.TeamIndex != TeamIndex )
|
|
{
|
|
if ( PC.PlayerReplicationInfo.bReadyToPlay ) {
|
|
PC.ServerUnreadyPlayer();
|
|
PC.PlayerReplicationInfo.bReadyToPlay = False;
|
|
}
|
|
PC.ServerChangeTeam(TeamIndex);
|
|
}
|
|
else {
|
|
// if already in this team, then do ready/unready
|
|
if ( PC.Level.NetMode == NM_Standalone || !PC.PlayerReplicationInfo.bReadyToPlay ) {
|
|
PC.SendSelectedVeterancyToServer(true);
|
|
|
|
//Set Ready
|
|
PC.ServerRestartPlayer();
|
|
PC.PlayerReplicationInfo.bReadyToPlay = True;
|
|
if ( PC.Level.GRI.bMatchHasBegun )
|
|
PC.ClientCloseMenu(true, false);
|
|
}
|
|
else {
|
|
PC.ServerUnreadyPlayer();
|
|
PC.PlayerReplicationInfo.bReadyToPlay = False;
|
|
}
|
|
}
|
|
|
|
UpdateButtonCaptions();
|
|
|
|
return true;
|
|
}
|
|
|
|
function UpdateButtonCaptions()
|
|
{
|
|
local KFPlayerController PC;
|
|
local int TeamIndex;
|
|
|
|
PC = KFPlayerController(PlayerOwner());
|
|
if ( PC == none )
|
|
return;
|
|
|
|
if ( PC.PlayerReplicationInfo == none || PC.PlayerReplicationInfo.Team == none ) {
|
|
TeamButtons[0].Caption = strJoin;
|
|
TeamButtons[1].Caption = strJoin;
|
|
}
|
|
else {
|
|
TeamIndex = PC.PlayerReplicationInfo.Team.TeamIndex;
|
|
TeamButtons[1-TeamIndex].Caption = strJoin;
|
|
if ( PC.PlayerReplicationInfo.bReadyToPlay )
|
|
TeamButtons[TeamIndex].Caption = UnreadyString;
|
|
else
|
|
TeamButtons[TeamIndex].Caption = ReadyString;
|
|
}
|
|
}
|
|
|
|
function AddPlayer( KFPlayerReplicationInfo PRI, int Index, Canvas C )
|
|
{
|
|
local float Top;
|
|
local Material M;
|
|
local ScrnBalance Mut;
|
|
local String PlayerName;
|
|
|
|
if( Index>=PlayerBoxes.Length )
|
|
{
|
|
Top = 0.025 + Index*0.045;
|
|
PlayerBoxes.Length = Index+1;
|
|
PlayerBoxes[Index].ReadyBox = new (None) Class'moCheckBox';
|
|
PlayerBoxes[Index].ReadyBox.bValueReadOnly = true;
|
|
PlayerBoxes[Index].ReadyBox.ComponentJustification = TXTA_Left;
|
|
PlayerBoxes[Index].ReadyBox.CaptionWidth = 0.82;
|
|
PlayerBoxes[Index].ReadyBox.LabelColor.B = 0;
|
|
PlayerBoxes[Index].ReadyBox.WinTop = 0.0475+Top;
|
|
PlayerBoxes[Index].ReadyBox.WinLeft = 0.125;
|
|
PlayerBoxes[Index].ReadyBox.WinWidth = 0.40;
|
|
PlayerBoxes[Index].ReadyBox.WinHeight = 0.045;
|
|
PlayerBoxes[Index].ReadyBox.RenderWeight = 0.55;
|
|
PlayerBoxes[Index].ReadyBox.bAcceptsInput = False;
|
|
|
|
PlayerBoxes[Index].PlayerBox = new (None) Class'KFPlayerReadyBar';
|
|
PlayerBoxes[Index].PlayerBox.WinTop = 0.04+Top;
|
|
PlayerBoxes[Index].PlayerBox.WinLeft = 0.09;
|
|
PlayerBoxes[Index].PlayerBox.WinWidth = 0.35;
|
|
PlayerBoxes[Index].PlayerBox.WinHeight = 0.045;
|
|
PlayerBoxes[Index].PlayerBox.RenderWeight = 0.35;
|
|
|
|
PlayerBoxes[Index].PlayerPerk = new (None) Class'GUIImage';
|
|
PlayerBoxes[Index].PlayerPerk.ImageStyle = ISTY_Justified;
|
|
PlayerBoxes[Index].PlayerPerk.WinTop = 0.043+Top;
|
|
PlayerBoxes[Index].PlayerPerk.WinLeft = 0.0918;
|
|
PlayerBoxes[Index].PlayerPerk.WinWidth = 0.039;
|
|
PlayerBoxes[Index].PlayerPerk.WinHeight = 0.039;
|
|
PlayerBoxes[Index].PlayerPerk.RenderWeight = 0.56;
|
|
|
|
PlayerBoxes[Index].PlayerVetLabel = new (None) Class'GUILabel';
|
|
PlayerBoxes[Index].PlayerVetLabel.TextAlign = TXTA_Right;
|
|
PlayerBoxes[Index].PlayerVetLabel.TextColor = Class'Canvas'.Static.MakeColor(19,19,19);
|
|
PlayerBoxes[Index].PlayerVetLabel.TextFont = "UT2SmallFont";
|
|
PlayerBoxes[Index].PlayerVetLabel.WinTop = 0.04+Top;
|
|
PlayerBoxes[Index].PlayerVetLabel.WinLeft = 0.27907;
|
|
PlayerBoxes[Index].PlayerVetLabel.WinWidth = 0.151172;
|
|
PlayerBoxes[Index].PlayerVetLabel.WinHeight = 0.045;
|
|
PlayerBoxes[Index].PlayerVetLabel.RenderWeight = 0.5;
|
|
|
|
AppendComponent(PlayerBoxes[Index].ReadyBox, true);
|
|
AppendComponent(PlayerBoxes[Index].PlayerBox, true);
|
|
AppendComponent(PlayerBoxes[Index].PlayerPerk, true);
|
|
AppendComponent(PlayerBoxes[Index].PlayerVetLabel, true);
|
|
|
|
/*
|
|
Top = (PlayerBoxes[Index].PlayerBox.WinTop+PlayerBoxes[Index].PlayerBox.WinHeight);
|
|
if( !bMOTDHidden && Top>=ADBackground.WinTop )
|
|
{
|
|
ADBackground.WinTop = Top+0.01;
|
|
if( (ADBackground.WinTop+ADBackground.WinHeight)>t_ChatBox.WinTop )
|
|
{
|
|
ADBackground.WinHeight = t_ChatBox.WinTop-ADBackground.WinTop;
|
|
if( ADBackground.WinHeight<0.15 )
|
|
{
|
|
RemoveComponent(ADBackground);
|
|
RemoveComponent(tb_ServerMOTD);
|
|
bMOTDHidden = true;
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
PlayerBoxes[Index].ReadyBox.Checked(PRI.bReadyToPlay);
|
|
|
|
Mut = class'ScrnBalance'.default.Mut;
|
|
if ( Mut != none ) {
|
|
PlayerName = Mut.LeftCol(Mut.ColoredPlayerName(PRI), 20);
|
|
}
|
|
else {
|
|
PlayerName = Left(PRI.PlayerName, 20);
|
|
}
|
|
PlayerBoxes[Index].ReadyBox.SetCaption(" "$PlayerName);
|
|
|
|
if ( PRI.ClientVeteranSkill != none )
|
|
{
|
|
PlayerBoxes[Index].PlayerVetLabel.Caption = LvAbbrString @ PRI.ClientVeteranSkillLevel @ PRI.ClientVeteranSkill.default.VeterancyName;
|
|
if( Class<SRVeterancyTypes>(PRI.ClientVeteranSkill)!=None )
|
|
{
|
|
Class<SRVeterancyTypes>(PRI.ClientVeteranSkill).Static.PreDrawPerk(C,PRI.ClientVeteranSkillLevel,PlayerBoxes[Index].PlayerPerk.Image,M);
|
|
PlayerBoxes[Index].PlayerPerk.ImageColor = C.DrawColor;
|
|
}
|
|
else
|
|
{
|
|
PlayerBoxes[Index].PlayerPerk.Image = PRI.ClientVeteranSkill.default.OnHUDIcon;
|
|
PlayerBoxes[Index].PlayerPerk.ImageColor = Class'Canvas'.Static.MakeColor(255,255,255);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
PlayerBoxes[Index].PlayerPerk.Image = None;
|
|
PlayerBoxes[Index].PlayerVetLabel.Caption = "";
|
|
}
|
|
PlayerBoxes[Index].bIsEmpty = false;
|
|
}
|
|
|
|
function AddBluePlayer( KFPlayerReplicationInfo PRI, int Index, Canvas C )
|
|
{
|
|
local float Top;
|
|
local Material M;
|
|
local ScrnBalance Mut;
|
|
local String PlayerName;
|
|
|
|
if( Index>=BluePlayerBoxes.Length )
|
|
{
|
|
Top = 0.025 + Index*0.045;
|
|
BluePlayerBoxes.Length = Index+1;
|
|
BluePlayerBoxes[Index].ReadyBox = new (None) Class'moCheckBox';
|
|
BluePlayerBoxes[Index].ReadyBox.bValueReadOnly = true;
|
|
BluePlayerBoxes[Index].ReadyBox.ComponentJustification = TXTA_Left;
|
|
BluePlayerBoxes[Index].ReadyBox.CaptionWidth = 0.82;
|
|
BluePlayerBoxes[Index].ReadyBox.LabelColor.B = 0;
|
|
BluePlayerBoxes[Index].ReadyBox.WinTop = 0.0475+Top;
|
|
BluePlayerBoxes[Index].ReadyBox.WinLeft = 0.545;
|
|
BluePlayerBoxes[Index].ReadyBox.WinWidth = 0.4;
|
|
BluePlayerBoxes[Index].ReadyBox.WinHeight = 0.045;
|
|
BluePlayerBoxes[Index].ReadyBox.RenderWeight = 0.55;
|
|
BluePlayerBoxes[Index].ReadyBox.bAcceptsInput = False;
|
|
|
|
BluePlayerBoxes[Index].PlayerBox = new (None) Class'KFPlayerReadyBar';
|
|
BluePlayerBoxes[Index].PlayerBox.WinTop = 0.04+Top;
|
|
BluePlayerBoxes[Index].PlayerBox.WinLeft = 0.51;
|
|
BluePlayerBoxes[Index].PlayerBox.WinWidth = 0.35;
|
|
BluePlayerBoxes[Index].PlayerBox.WinHeight = 0.045;
|
|
BluePlayerBoxes[Index].PlayerBox.RenderWeight = 0.35;
|
|
|
|
BluePlayerBoxes[Index].PlayerPerk = new (None) Class'GUIImage';
|
|
BluePlayerBoxes[Index].PlayerPerk.ImageStyle = ISTY_Justified;
|
|
BluePlayerBoxes[Index].PlayerPerk.WinTop = 0.043+Top;
|
|
BluePlayerBoxes[Index].PlayerPerk.WinLeft = 0.5118;
|
|
BluePlayerBoxes[Index].PlayerPerk.WinWidth = 0.039;
|
|
BluePlayerBoxes[Index].PlayerPerk.WinHeight = 0.039;
|
|
BluePlayerBoxes[Index].PlayerPerk.RenderWeight = 0.56;
|
|
|
|
BluePlayerBoxes[Index].PlayerVetLabel = new (None) Class'GUILabel';
|
|
BluePlayerBoxes[Index].PlayerVetLabel.TextAlign = TXTA_Right;
|
|
BluePlayerBoxes[Index].PlayerVetLabel.TextColor = Class'Canvas'.Static.MakeColor(19,19,19);
|
|
BluePlayerBoxes[Index].PlayerVetLabel.TextFont = "UT2SmallFont";
|
|
BluePlayerBoxes[Index].PlayerVetLabel.WinTop = 0.04+Top;
|
|
BluePlayerBoxes[Index].PlayerVetLabel.WinLeft = 0.69907;
|
|
BluePlayerBoxes[Index].PlayerVetLabel.WinWidth = 0.151172;
|
|
BluePlayerBoxes[Index].PlayerVetLabel.WinHeight = 0.045;
|
|
BluePlayerBoxes[Index].PlayerVetLabel.RenderWeight = 0.5;
|
|
|
|
AppendComponent(BluePlayerBoxes[Index].ReadyBox, true);
|
|
AppendComponent(BluePlayerBoxes[Index].PlayerBox, true);
|
|
AppendComponent(BluePlayerBoxes[Index].PlayerPerk, true);
|
|
AppendComponent(BluePlayerBoxes[Index].PlayerVetLabel, true);
|
|
|
|
/*
|
|
Top = (BluePlayerBoxes[Index].PlayerBox.WinTop+BluePlayerBoxes[Index].PlayerBox.WinHeight);
|
|
if( !bMOTDHidden && Top>=ADBackground.WinTop )
|
|
{
|
|
ADBackground.WinTop = Top+0.01;
|
|
if( (ADBackground.WinTop+ADBackground.WinHeight)>t_ChatBox.WinTop )
|
|
{
|
|
ADBackground.WinHeight = t_ChatBox.WinTop-ADBackground.WinTop;
|
|
if( ADBackground.WinHeight<0.15 )
|
|
{
|
|
RemoveComponent(ADBackground);
|
|
RemoveComponent(tb_ServerMOTD);
|
|
bMOTDHidden = true;
|
|
}
|
|
}
|
|
}
|
|
*/
|
|
}
|
|
BluePlayerBoxes[Index].ReadyBox.Checked(PRI.bReadyToPlay);
|
|
|
|
Mut = class'ScrnBalance'.default.Mut;
|
|
if ( Mut != none ) {
|
|
PlayerName = Mut.LeftCol(Mut.ColoredPlayerName(PRI), 20);
|
|
}
|
|
else {
|
|
PlayerName = Left(PRI.PlayerName, 20);
|
|
}
|
|
BluePlayerBoxes[Index].ReadyBox.SetCaption(" "$PlayerName);
|
|
|
|
if ( PRI.ClientVeteranSkill != none )
|
|
{
|
|
BluePlayerBoxes[Index].PlayerVetLabel.Caption = LvAbbrString @ PRI.ClientVeteranSkillLevel @ PRI.ClientVeteranSkill.default.VeterancyName;
|
|
if( Class<SRVeterancyTypes>(PRI.ClientVeteranSkill)!=None )
|
|
{
|
|
Class<SRVeterancyTypes>(PRI.ClientVeteranSkill).Static.PreDrawPerk(C,PRI.ClientVeteranSkillLevel,BluePlayerBoxes[Index].PlayerPerk.Image,M);
|
|
BluePlayerBoxes[Index].PlayerPerk.ImageColor = C.DrawColor;
|
|
}
|
|
else
|
|
{
|
|
BluePlayerBoxes[Index].PlayerPerk.Image = PRI.ClientVeteranSkill.default.OnHUDIcon;
|
|
BluePlayerBoxes[Index].PlayerPerk.ImageColor = Class'Canvas'.Static.MakeColor(255,255,255);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
BluePlayerBoxes[Index].PlayerPerk.Image = None;
|
|
BluePlayerBoxes[Index].PlayerVetLabel.Caption = "";
|
|
}
|
|
BluePlayerBoxes[Index].bIsEmpty = false;
|
|
}
|
|
|
|
|
|
function EmptyBluePlayers( int Index )
|
|
{
|
|
while( Index<BluePlayerBoxes.Length && !BluePlayerBoxes[Index].bIsEmpty )
|
|
{
|
|
BluePlayerBoxes[Index].ReadyBox.Checked(False);
|
|
BluePlayerBoxes[Index].PlayerPerk.Image = None;
|
|
BluePlayerBoxes[Index].PlayerVetLabel.Caption = "";
|
|
BluePlayerBoxes[Index].ReadyBox.SetCaption("");
|
|
BluePlayerBoxes[Index].bIsEmpty = true;
|
|
++Index;
|
|
}
|
|
}
|
|
|
|
function bool InternalOnPreDraw(Canvas C)
|
|
{
|
|
local int i, r, b;
|
|
//local string StoryString;
|
|
local String SkillString;
|
|
local TSCGameReplicationInfo GRI;
|
|
local KFPlayerReplicationInfo KFPRI;
|
|
local PlayerController PC;
|
|
|
|
PC = PlayerOwner();
|
|
|
|
if ( PC == none || PC.Level == none ) // Error?
|
|
return false;
|
|
|
|
if ( (PC.PlayerReplicationInfo != none && (!PC.PlayerReplicationInfo.bWaitingPlayer || PC.PlayerReplicationInfo.bOnlySpectator)) || PC.Outer.Name=='Entry' )
|
|
{
|
|
bAllowClose = true;
|
|
PC.ClientCloseMenu(True,False);
|
|
return false;
|
|
}
|
|
|
|
if ( PC.PlayerReplicationInfo != none && PC.PlayerReplicationInfo.Team != MyTeam ) {
|
|
MyTeam = PC.PlayerReplicationInfo.Team;
|
|
TeamChanged();
|
|
}
|
|
|
|
t_Footer.InternalOnPreDraw(C);
|
|
|
|
GRI = TSCGameReplicationInfo(PC.GameReplicationInfo);
|
|
|
|
if ( GRI != none ) {
|
|
if ( GRI.bMatchHasBegun )
|
|
WaveLabel.Caption = strCurrentWave @ string(GRI.WaveNumber + 1) $ "/" $ string(GRI.FinalWave)$"+"$ string(GRI.OvertimeWaves) $"OT+"$ string(GRI.SudDeathWaves)$"SD";
|
|
else
|
|
WaveLabel.Caption = string(GRI.FinalWave) @ strWaves @ "+" @ string(GRI.OvertimeWaves)$"OT"
|
|
@ "+" @ string(GRI.SudDeathWaves)$"SD";
|
|
}
|
|
else {
|
|
WaveLabel.Caption = "Wrong Game Type!"; // shouldn't happen
|
|
return false;
|
|
}
|
|
C.DrawColor.A = 255;
|
|
|
|
// First fill in non-ready players.
|
|
RedPlayers = 0;
|
|
BluePlayers = 0;
|
|
for ( i = 0; i<GRI.PRIArray.Length; i++ ) {
|
|
KFPRI = KFPlayerReplicationInfo(GRI.PRIArray[i]);
|
|
if ( KFPRI == none || KFPRI.bOnlySpectator || KFPRI.bReadyToPlay || KFPRI.Team == none)
|
|
continue;
|
|
|
|
if ( KFPRI.Team.TeamIndex == 0 ) {
|
|
RedPlayers++;
|
|
if ( r < MaxPlayersOnList ) {
|
|
AddPlayer(KFPRI, r++, C);
|
|
}
|
|
}
|
|
else if ( KFPRI.Team.TeamIndex == 1 ) {
|
|
BluePlayers++;
|
|
if ( b < MaxPlayersOnList )
|
|
AddBluePlayer(KFPRI, b++, C);
|
|
}
|
|
}
|
|
|
|
// Then comes rest.
|
|
for ( i = 0; i < GRI.PRIArray.Length; i++ ) {
|
|
KFPRI = KFPlayerReplicationInfo(GRI.PRIArray[i]);
|
|
if ( KFPRI == none || KFPRI.bOnlySpectator || !KFPRI.bReadyToPlay || KFPRI.Team == none)
|
|
continue;
|
|
|
|
if ( KFPRI.bReadyToPlay ) {
|
|
if ( !bTimeoutTimeLogged ) {
|
|
ActivateTimeoutTime = PC.Level.TimeSeconds;
|
|
bTimeoutTimeLogged = true;
|
|
}
|
|
}
|
|
|
|
if ( KFPRI.Team.TeamIndex == 0 ) {
|
|
RedPlayers++;
|
|
if ( r < MaxPlayersOnList )
|
|
AddPlayer(KFPRI, r++, C);
|
|
}
|
|
else if ( KFPRI.Team.TeamIndex == 1 ) {
|
|
BluePlayers++;
|
|
if ( b < MaxPlayersOnList )
|
|
AddBluePlayer(KFPRI, b++, C);
|
|
}
|
|
}
|
|
|
|
if( r < MaxPlayersOnList )
|
|
EmptyPlayers(r);
|
|
if( b < MaxPlayersOnList )
|
|
EmptyBluePlayers(b);
|
|
|
|
DoneIt:
|
|
//StoryString = PC.Level.Description;
|
|
|
|
if ( !bStoryBoxFilled )
|
|
{
|
|
l_StoryBox.LoadStoryText();
|
|
bStoryBoxFilled = true;
|
|
}
|
|
|
|
CheckBotButtonAccess();
|
|
|
|
if ( GRI.BaseDifficulty <= 1 )
|
|
SkillString = BeginnerString;
|
|
else if ( GRI.BaseDifficulty <= 2 )
|
|
SkillString = NormalString;
|
|
else if ( GRI.BaseDifficulty <= 4 )
|
|
SkillString = HardString;
|
|
else if ( GRI.BaseDifficulty <= 5 )
|
|
SkillString = SuicidalString;
|
|
else
|
|
SkillString = HellOnEarthString;
|
|
|
|
CurrentMapLabel.Caption = PC.Level.Title;
|
|
DifficultyLabel.Caption = SkillString;
|
|
|
|
if ( MyTeam != none ) {
|
|
l_PlayerTeam.Caption = strTeam @ TeamNames[MyTeam.TeamIndex];
|
|
l_PlayerTeam.TextColor = MyTeam.TeamColor;
|
|
}
|
|
else {
|
|
l_PlayerTeam.Caption = strNotTeamMember;
|
|
l_PlayerTeam.TextColor = class'Canvas'.static.MakeColor(192, 192, 192, 255);
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
Begin Object Class=GUIImage Name=TSCLogoLeft
|
|
Image=Texture'TSC_T.Team.TSC_Left'
|
|
ImageStyle=ISTY_Scaled
|
|
ImageRenderStyle=MSTY_Normal
|
|
IniOption="@Internal"
|
|
WinTop=0.160000
|
|
WinWidth=0.075650
|
|
WinHeight=0.680000
|
|
End Object
|
|
TSCLogo=GUIImage'ScrnBalanceSrv.TSCLobbyMenu.TSCLogoLeft'
|
|
|
|
Begin Object Class=GUIButton Name=RedButton
|
|
Caption="Join"
|
|
Hint="Click to join the British Squad, or Ready/Unredy, if already joined"
|
|
WinTop=0.025000
|
|
WinLeft=0.370000
|
|
WinWidth=0.100000
|
|
RenderWeight=2.000000
|
|
TabOrder=0
|
|
bBoundToParent=True
|
|
ToolTip=None
|
|
|
|
OnClick=TSCLobbyMenu.OnTeamButtonClick
|
|
OnKeyEvent=ReadyButton.InternalOnKeyEvent
|
|
End Object
|
|
TeamButtons(0)=GUIButton'ScrnBalanceSrv.TSCLobbyMenu.RedButton'
|
|
|
|
Begin Object Class=GUIButton Name=BlueButton
|
|
Caption="Join"
|
|
Hint="Click to join the Steampunk Squad, or Ready/Unredy, if already joined"
|
|
WinTop=0.025000
|
|
WinLeft=0.790000
|
|
WinWidth=0.100000
|
|
RenderWeight=2.000000
|
|
TabOrder=1
|
|
bBoundToParent=True
|
|
ToolTip=None
|
|
|
|
OnClick=TSCLobbyMenu.OnTeamButtonClick
|
|
OnKeyEvent=ReadyButton.InternalOnKeyEvent
|
|
End Object
|
|
TeamButtons(1)=GUIButton'ScrnBalanceSrv.TSCLobbyMenu.BlueButton'
|
|
|
|
Begin Object Class=GUIImage Name=RedLogo
|
|
Image=Texture'TSC_T.Team.BritishLogo'
|
|
ImageStyle=ISTY_Scaled
|
|
ImageRenderStyle=MSTY_Normal
|
|
IniOption="@Internal"
|
|
WinWidth=0.090000
|
|
WinHeight=0.160000
|
|
End Object
|
|
TeamLogos(0)=GUIImage'ScrnBalanceSrv.TSCLobbyMenu.RedLogo'
|
|
|
|
Begin Object Class=GUIImage Name=BlueLogo
|
|
Image=Texture'TSC_T.Team.SteampunkLogo'
|
|
ImageStyle=ISTY_Scaled
|
|
ImageRenderStyle=MSTY_Normal
|
|
IniOption="@Internal"
|
|
WinLeft=0.900000
|
|
WinWidth=0.090000
|
|
WinHeight=0.160000
|
|
End Object
|
|
TeamLogos(1)=GUIImage'ScrnBalanceSrv.TSCLobbyMenu.BlueLogo'
|
|
|
|
Begin Object Class=GUIImage Name=RedTitle
|
|
Image=Texture'TSC_T.Team.BritishSquad'
|
|
ImageStyle=ISTY_Scaled
|
|
ImageRenderStyle=MSTY_Normal
|
|
IniOption="@Internal"
|
|
WinLeft=0.100000
|
|
WinWidth=0.240000
|
|
WinHeight=0.060000
|
|
RenderWeight=0.150000
|
|
End Object
|
|
TeamTitles(0)=GUIImage'ScrnBalanceSrv.TSCLobbyMenu.RedTitle'
|
|
|
|
Begin Object Class=GUIImage Name=BlueTitle
|
|
Image=Texture'TSC_T.Team.SteampunkSquad'
|
|
ImageStyle=ISTY_Scaled
|
|
ImageRenderStyle=MSTY_Normal
|
|
IniOption="@Internal"
|
|
WinLeft=0.511800
|
|
WinWidth=0.240000
|
|
WinHeight=0.060000
|
|
RenderWeight=0.150000
|
|
End Object
|
|
TeamTitles(1)=GUIImage'ScrnBalanceSrv.TSCLobbyMenu.BlueTitle'
|
|
|
|
Begin Object Class=GUILabel Name=PlayerTeam
|
|
Caption="Select a team"
|
|
TextColor=(B=192,G=192,R=192)
|
|
VertAlign=TXTA_Center
|
|
FontScale=FNS_Small
|
|
WinTop=0.660000
|
|
WinLeft=0.703000
|
|
WinWidth=0.230000
|
|
WinHeight=0.035000
|
|
RenderWeight=0.950000
|
|
End Object
|
|
l_PlayerTeam=GUILabel'ScrnBalanceSrv.TSCLobbyMenu.PlayerTeam'
|
|
|
|
Begin Object Class=GUILabel Name=HumanDamageL
|
|
Caption="Human Damage: Normal"
|
|
TextColor=(B=158,G=176,R=175)
|
|
FontScale=FNS_Small
|
|
WinTop=0.825000
|
|
WinLeft=0.655000
|
|
WinWidth=0.330000
|
|
WinHeight=0.035000
|
|
RenderWeight=0.950000
|
|
End Object
|
|
l_HDmgCaption=GUILabel'ScrnBalanceSrv.TSCLobbyMenu.HumanDamageL'
|
|
|
|
Begin Object Class=GUILabel Name=HumanDamageInfoL
|
|
Caption="Full protection within own Base."
|
|
TextColor=(B=90,G=115,R=115)
|
|
bMultiLine=True
|
|
FontScale=FNS_Small
|
|
WinTop=0.850000
|
|
WinLeft=0.655000
|
|
WinWidth=0.330000
|
|
WinHeight=0.070000
|
|
RenderWeight=0.950000
|
|
End Object
|
|
l_HDmgInfo=GUILabel'ScrnBalanceSrv.TSCLobbyMenu.HumanDamageInfoL'
|
|
|
|
ReadyString="Ready"
|
|
UnreadyString="Unready"
|
|
strJoin="Join"
|
|
strJoined="Joined"
|
|
strCurrentWave="Current Wave:"
|
|
strWaves="waves"
|
|
strTeam="Team:"
|
|
strNotTeamMember="Select team..."
|
|
WaitingForMorePlayers="Waiting for more players to join in..."
|
|
TeamNames(0)="British"
|
|
TeamNames(1)="Steampunk"
|
|
strHDmg="Human Damage: "
|
|
HDmgNames(0)="OFF"
|
|
HDmgNames(1)="No Friendly Fire"
|
|
HDmgNames(2)="PvP, No Friendly Fire."
|
|
HDmgNames(3)="Normal"
|
|
HDmgNames(4)="PvP"
|
|
HDmgNames(5)="Always"
|
|
HDmgInfo(0)="Players can't hurt each other at all."
|
|
HDmgInfo(1)="Teammates can't hurt each other."
|
|
HDmgInfo(2)="Players can hurt enemies only."
|
|
HDmgInfo(3)="Full protection within own Base."
|
|
HDmgInfo(4)="Base protects from Friendly Fire only."
|
|
HDmgInfo(5)="Base does not protect from Human Damage."
|
|
MaxPlayersOnList=11
|
|
Begin Object Class=SRLobbyChat Name=ChatBox
|
|
OnCreateComponent=ChatBox.InternalOnCreateComponent
|
|
WinTop=0.807600
|
|
WinLeft=0.016090
|
|
WinWidth=0.971410
|
|
WinHeight=0.100000
|
|
RenderWeight=1.000000
|
|
TabOrder=1
|
|
OnPreDraw=ChatBox.FloatingPreDraw
|
|
OnRendered=ChatBox.FloatingRendered
|
|
OnHover=ChatBox.FloatingHover
|
|
OnMousePressed=ChatBox.FloatingMousePressed
|
|
OnMouseRelease=ChatBox.FloatingMouseRelease
|
|
End Object
|
|
t_ChatBox=SRLobbyChat'ScrnBalanceSrv.TSCLobbyMenu.ChatBox'
|
|
|
|
Begin Object Class=KFMapStoryLabel Name=LobbyMapStoryBox
|
|
OnCreateComponent=LobbyMapStoryBox.InternalOnCreateComponent
|
|
bVisible=False
|
|
End Object
|
|
l_StoryBox=KFMapStoryLabel'ScrnBalanceSrv.TSCLobbyMenu.LobbyMapStoryBox'
|
|
|
|
Begin Object Class=AltSectionBackground Name=StoryBoxBackground
|
|
bVisible=False
|
|
OnPreDraw=StoryBoxBackground.InternalPreDraw
|
|
End Object
|
|
StoryBoxBG=AltSectionBackground'ScrnBalanceSrv.TSCLobbyMenu.StoryBoxBackground'
|
|
|
|
Begin Object Class=AltSectionBackground Name=GameInfoB
|
|
bVisible=False
|
|
OnPreDraw=GameInfoB.InternalPreDraw
|
|
End Object
|
|
GameInfoBG=AltSectionBackground'ScrnBalanceSrv.TSCLobbyMenu.GameInfoB'
|
|
|
|
Begin Object Class=GUILabel Name=CurrentMapL
|
|
Caption="LAlalala Map"
|
|
TextColor=(B=158,G=176,R=175)
|
|
WinTop=0.750000
|
|
WinLeft=0.655000
|
|
WinWidth=0.330000
|
|
WinHeight=0.035000
|
|
RenderWeight=0.900000
|
|
End Object
|
|
CurrentMapLabel=GUILabel'ScrnBalanceSrv.TSCLobbyMenu.CurrentMapL'
|
|
|
|
Begin Object Class=GUILabel Name=DifficultyL
|
|
Caption="Difficulty"
|
|
TextColor=(B=158,G=176,R=175)
|
|
WinTop=0.775000
|
|
WinLeft=0.655000
|
|
WinWidth=0.330000
|
|
WinHeight=0.035000
|
|
RenderWeight=0.900000
|
|
End Object
|
|
DifficultyLabel=GUILabel'ScrnBalanceSrv.TSCLobbyMenu.DifficultyL'
|
|
|
|
Begin Object Class=GUIImage Name=WaveB
|
|
bVisible=False
|
|
End Object
|
|
WaveBG=GUIImage'ScrnBalanceSrv.TSCLobbyMenu.WaveB'
|
|
|
|
Begin Object Class=GUILabel Name=WaveL
|
|
Caption="1/4"
|
|
TextColor=(B=158,G=176,R=175)
|
|
FontScale=FNS_Small
|
|
WinTop=0.800000
|
|
WinLeft=0.655000
|
|
WinWidth=0.330000
|
|
WinHeight=0.035000
|
|
RenderWeight=0.950000
|
|
End Object
|
|
WaveLabel=GUILabel'ScrnBalanceSrv.TSCLobbyMenu.WaveL'
|
|
|
|
DifficultyString="Difficulty:"
|
|
Begin Object Class=GUILabel Name=TimeOutCounter
|
|
Caption="Game will auto-commence in: "
|
|
TextColor=(B=158,G=176,R=175)
|
|
WinTop=0.960000
|
|
WinLeft=0.005000
|
|
WinWidth=0.995000
|
|
WinHeight=0.033203
|
|
TabOrder=6
|
|
End Object
|
|
label_TimeOutCounter=GUILabel'ScrnBalanceSrv.TSCLobbyFooter.TimeOutCounter'
|
|
|
|
Begin Object Class=GUILabel Name=PerkClickArea
|
|
WinTop=0.567412
|
|
WinLeft=0.511800
|
|
WinWidth=0.122478
|
|
WinHeight=0.332588
|
|
bAcceptsInput=True
|
|
OnClickSound=CS_Click
|
|
OnClick=LobbyMenu.ShowPerkMenu
|
|
End Object
|
|
PerkClickLabel=GUILabel'ScrnBalanceSrv.TSCLobbyMenu.PerkClickArea'
|
|
|
|
Begin Object Class=GUISectionBackground Name=BGPerk
|
|
bFillClient=True
|
|
Caption="Player Info"
|
|
WinTop=0.567412
|
|
WinLeft=0.634278
|
|
WinWidth=0.355722
|
|
WinHeight=0.140000
|
|
OnPreDraw=BGPerk.InternalPreDraw
|
|
End Object
|
|
i_BGPerk=GUISectionBackground'ScrnBalanceSrv.TSCLobbyMenu.BGPerk'
|
|
|
|
Begin Object Class=GUISectionBackground Name=BGPerkEffects
|
|
bFillClient=True
|
|
Caption="Game Info"
|
|
WinTop=0.707412
|
|
WinLeft=0.634278
|
|
WinWidth=0.355722
|
|
WinHeight=0.192588
|
|
OnPreDraw=BGPerkEffects.InternalPreDraw
|
|
End Object
|
|
i_BGPerkEffects=GUISectionBackground'ScrnBalanceSrv.TSCLobbyMenu.BGPerkEffects'
|
|
|
|
Begin Object Class=GUIScrollTextBox Name=PerkEffectsScroll
|
|
OnCreateComponent=PerkEffectsScroll.InternalOnCreateComponent
|
|
bVisible=False
|
|
End Object
|
|
lb_PerkEffects=GUIScrollTextBox'ScrnBalanceSrv.TSCLobbyMenu.PerkEffectsScroll'
|
|
|
|
Begin Object Class=GUIImage Name=PlayerPortrait
|
|
Image=Texture'InterfaceArt_tex.Menu.changeme_texture'
|
|
ImageStyle=ISTY_Scaled
|
|
ImageRenderStyle=MSTY_Normal
|
|
IniOption="@Internal"
|
|
WinTop=0.607517
|
|
WinLeft=0.515260
|
|
WinWidth=0.115541
|
|
WinHeight=0.286159
|
|
RenderWeight=0.300000
|
|
End Object
|
|
i_Portrait=GUIImage'ScrnBalanceSrv.TSCLobbyMenu.PlayerPortrait'
|
|
|
|
Begin Object Class=GUISectionBackground Name=PlayerPortraitB
|
|
WinTop=0.567412
|
|
WinLeft=0.511800
|
|
WinWidth=0.122478
|
|
WinHeight=0.332588
|
|
OnPreDraw=PlayerPortraitB.InternalPreDraw
|
|
End Object
|
|
PlayerPortraitBG=GUISectionBackground'ScrnBalanceSrv.TSCLobbyMenu.PlayerPortraitB'
|
|
|
|
Begin Object Class=GUISectionBackground Name=ADBG
|
|
Caption="Server Info"
|
|
WinTop=0.567412
|
|
WinLeft=0.090000
|
|
WinWidth=0.380000
|
|
WinHeight=0.250000
|
|
RenderWeight=0.300000
|
|
OnPreDraw=ADBG.InternalPreDraw
|
|
End Object
|
|
ADBackground=GUISectionBackground'ScrnBalanceSrv.TSCLobbyMenu.ADBG'
|
|
|
|
Begin Object Class=TSCLobbyFooter Name=BuyFooter
|
|
RenderWeight=0.300000
|
|
TabOrder=8
|
|
bBoundToParent=False
|
|
bScaleToParent=False
|
|
OnPreDraw=BuyFooter.InternalOnPreDraw
|
|
End Object
|
|
t_Footer=TSCLobbyFooter'ScrnBalanceSrv.TSCLobbyMenu.BuyFooter'
|
|
|
|
}
|