359 lines
9.4 KiB
Ucode
359 lines
9.4 KiB
Ucode
//=============================================================================
|
|
// Quick Perk Select Menu for the trader
|
|
//=============================================================================
|
|
// Killing Floor Source
|
|
// Copyright (C) 2009 Tripwire Interactive LLC
|
|
// Christian "schneidzekk" Schneider
|
|
//=============================================================================
|
|
class KFQuickPerkSelect extends GUIMultiComponent;
|
|
|
|
var texture CurPerkBack;
|
|
|
|
var automated GUIImage PerkBack0;
|
|
var automated GUIImage PerkBack1;
|
|
var automated GUIImage PerkBack2;
|
|
var automated GUIImage PerkBack3;
|
|
var automated GUIImage PerkBack4;
|
|
var automated GUIImage PerkBack5;
|
|
|
|
var automated KFIndexedGUIImage PerkSelectIcon0;
|
|
var automated KFIndexedGUIImage PerkSelectIcon1;
|
|
var automated KFIndexedGUIImage PerkSelectIcon2;
|
|
var automated KFIndexedGUIImage PerkSelectIcon3;
|
|
var automated KFIndexedGUIImage PerkSelectIcon4;
|
|
var automated KFIndexedGUIImage PerkSelectIcon5;
|
|
|
|
var KFIndexedGUIImage PerkSelectIcons[6];
|
|
|
|
var int MaxPerks;
|
|
var int CurPerk;
|
|
var bool bPerkChange;
|
|
|
|
var float CurX;
|
|
var float CurY;
|
|
var float BoxSizeX;
|
|
var float BoxSizeY;
|
|
var float SpacerX;
|
|
var float SpacerY;
|
|
|
|
var KFSteamStatsAndAchievements KFStatsAndAchievements;
|
|
var bool bResized;
|
|
|
|
event InitComponent(GUIController MyController, GUIComponent MyOwner)
|
|
{
|
|
Super.InitComponent(MyController, MyOwner);
|
|
|
|
if ( PlayerOwner() != none )
|
|
{
|
|
KFStatsAndAchievements = KFSteamStatsAndAchievements(PlayerOwner().SteamStatsAndAchievements);
|
|
|
|
if ( KFStatsAndAchievements != none )
|
|
{
|
|
CheckPerks(KFStatsAndAchievements);
|
|
}
|
|
}
|
|
}
|
|
|
|
event Closed(GUIComponent Sender, bool bCancelled)
|
|
{
|
|
KFStatsAndAchievements = none;
|
|
|
|
super.Closed(Sender, bCancelled);
|
|
}
|
|
|
|
event ResolutionChanged( int ResX, int ResY )
|
|
{
|
|
super.ResolutionChanged(ResX, ResY);
|
|
bResized = false;
|
|
}
|
|
|
|
function bool MyOnDraw(Canvas C)
|
|
{
|
|
local int i, j;
|
|
|
|
super.OnDraw(C);
|
|
|
|
C.SetDrawColor(255, 255, 255, 255);
|
|
|
|
// make em square
|
|
if ( !bResized )
|
|
{
|
|
ResizeIcons(C);
|
|
}
|
|
|
|
// Current perk background
|
|
C.SetPos(WinLeft * C.ClipX , WinTop * C.ClipY);
|
|
C.DrawTileScaled(CurPerkBack, (WinHeight * C.ClipY) / CurPerkBack.USize, (WinHeight * C.ClipY) / CurPerkBack.USize);
|
|
|
|
// check if the current perk has changed recently
|
|
|
|
CheckPerks(KFStatsAndAchievements);
|
|
|
|
j = 0;
|
|
|
|
// Draw the available perks
|
|
for ( i = 0; i < MaxPerks; i++ )
|
|
{
|
|
if ( i != CurPerk )
|
|
{
|
|
PerkSelectIcons[j].Image = class'KFGameType'.default.LoadedSkills[i].default.OnHUDIcon;
|
|
PerkSelectIcons[j].Index = i;
|
|
|
|
if ( KFPlayerController(PlayerOwner()).bChangedVeterancyThisWave )
|
|
{
|
|
PerkSelectIcons[j].ImageColor.A = 64;
|
|
}
|
|
else
|
|
{
|
|
PerkSelectIcons[j].ImageColor.A = 255;
|
|
}
|
|
|
|
j++;
|
|
}
|
|
}
|
|
|
|
// Draw current perk
|
|
DrawCurrentPerk(C, CurPerk);
|
|
|
|
return false;
|
|
}
|
|
|
|
function bool InternalOnClick(GUIComponent Sender)
|
|
{
|
|
local PlayerController PC;
|
|
|
|
// Grab the Player Controller for later use
|
|
PC = PlayerOwner();
|
|
|
|
if ( Sender.IsA('KFIndexedGUIImage') && !KFPlayerController(PC).bChangedVeterancyThisWave )
|
|
{
|
|
if ( KFPlayerController(PC) != none )
|
|
{
|
|
class'KFPlayerController'.default.SelectedVeterancy = class'KFGameType'.default.LoadedSkills[KFIndexedGUIImage(Sender).Index];
|
|
KFPlayerController(PC).SetSelectedVeterancy( class'KFGameType'.default.LoadedSkills[KFIndexedGUIImage(Sender).Index] );
|
|
KFPlayerController(PC).SendSelectedVeterancyToServer();
|
|
PC.SaveConfig();
|
|
}
|
|
else
|
|
{
|
|
class'KFPlayerController'.default.SelectedVeterancy = class'KFGameType'.default.LoadedSkills[KFIndexedGUIImage(Sender).Index];
|
|
class'KFPlayerController'.static.StaticSaveConfig();
|
|
}
|
|
|
|
bPerkChange = true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
function DrawCurrentPerk(Canvas C, Int PerkIndex)
|
|
{
|
|
C.SetPos(WinLeft * C.ClipX , WinTop * C.ClipY);
|
|
C.DrawTileScaled(class'KFGameType'.default.LoadedSkills[PerkIndex].default.OnHUDIcon, (WinHeight * C.ClipY) / class'KFGameType'.default.LoadedSkills[PerkIndex].default.OnHUDIcon.USize, (WinHeight * C.ClipY) / class'KFGameType'.default.LoadedSkills[PerkIndex].default.OnHUDIcon.USize);
|
|
}
|
|
|
|
function ResizeIcons(Canvas C)
|
|
{
|
|
PerkBack0.WinWidth = (C.ClipY / C.ClipX) * BoxSizeX;
|
|
PerkBack1.WinWidth = (C.ClipY / C.ClipX) * BoxSizeX;
|
|
PerkBack2.WinWidth = (C.ClipY / C.ClipX) * BoxSizeX;
|
|
PerkBack3.WinWidth = (C.ClipY / C.ClipX) * BoxSizeX;
|
|
PerkBack4.WinWidth = (C.ClipY / C.ClipX) * BoxSizeX;
|
|
PerkBack5.WinWidth = (C.ClipY / C.ClipX) * BoxSizeX;
|
|
|
|
PerkSelectIcon0.WinWidth = (C.ClipY / C.ClipX) * BoxSizeY;
|
|
PerkSelectIcons[0] = PerkSelectIcon0;
|
|
PerkSelectIcon1.WinWidth = (C.ClipY / C.ClipX) * BoxSizeY;
|
|
PerkSelectIcons[1] = PerkSelectIcon1;
|
|
PerkSelectIcon2.WinWidth = (C.ClipY / C.ClipX) * BoxSizeY;
|
|
PerkSelectIcons[2] = PerkSelectIcon2;
|
|
PerkSelectIcon3.WinWidth = (C.ClipY / C.ClipX) * BoxSizeY;
|
|
PerkSelectIcons[3] = PerkSelectIcon3;
|
|
PerkSelectIcon4.WinWidth = (C.ClipY / C.ClipX) * BoxSizeY;
|
|
PerkSelectIcons[4] = PerkSelectIcon4;
|
|
PerkSelectIcon5.WinWidth = (C.ClipY / C.ClipX) * BoxSizeY;
|
|
PerkSelectIcons[5] = PerkSelectIcon5;
|
|
|
|
bResized = true;
|
|
}
|
|
|
|
function CheckPerks(KFSteamStatsAndAchievements StatsAndAchievements)
|
|
{
|
|
local int i;
|
|
local KFPlayerController KFPC;
|
|
|
|
// Grab the Player Controller for later use
|
|
KFPC = KFPlayerController(PlayerOwner());
|
|
|
|
// Hold onto our reference
|
|
KFStatsAndAchievements = StatsAndAchievements;
|
|
|
|
// Update the ItemCount and select the first item
|
|
MaxPerks = class'KFGameType'.default.LoadedSkills.Length;
|
|
//SetIndex(0);
|
|
|
|
for ( i = 0; i < MaxPerks; i++ )
|
|
{
|
|
if ( (KFPC != none && class'KFGameType'.default.LoadedSkills[i] == KFPC.SelectedVeterancy) ||
|
|
(KFPC == none && class'KFGameType'.default.LoadedSkills[i] == class'KFPlayerController'.default.SelectedVeterancy) )
|
|
{
|
|
CurPerk = i;
|
|
}
|
|
}
|
|
|
|
bPerkChange = false;
|
|
}
|
|
|
|
defaultproperties
|
|
{
|
|
OnDraw=MyOnDraw
|
|
|
|
BoxSizeX=0.04
|
|
BoxSizeY=0.04
|
|
SpacerX=0.001
|
|
SpacerY=0.004
|
|
|
|
MaxPerks=6
|
|
|
|
CurPerkBack=Texture'KF_InterfaceArt_tex.Menu.Perk_box'
|
|
|
|
Begin Object class=GUIImage Name=PB0
|
|
WinWidth=0.04
|
|
WinHeight=0.04
|
|
WinLeft=0.09
|
|
WinTop=0.0294
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.5
|
|
End Object
|
|
PerkBack0=PB0
|
|
|
|
Begin Object class=GUIImage Name=PB1
|
|
WinWidth=0.04
|
|
WinHeight=0.04
|
|
WinLeft=0.125
|
|
WinTop=0.0294
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.5
|
|
End Object
|
|
PerkBack1=PB1
|
|
|
|
Begin Object class=GUIImage Name=PB2
|
|
WinWidth=0.04
|
|
WinHeight=0.04
|
|
WinLeft=0.160
|
|
WinTop=0.0294
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.5
|
|
End Object
|
|
PerkBack2=PB2
|
|
|
|
Begin Object class=GUIImage Name=PB3
|
|
WinWidth=0.04
|
|
WinHeight=0.04
|
|
WinLeft=0.195
|
|
WinTop=0.0294
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.5
|
|
End Object
|
|
PerkBack3=PB3
|
|
|
|
Begin Object class=GUIImage Name=PB4
|
|
WinWidth=0.04
|
|
WinHeight=0.04
|
|
WinLeft=0.23
|
|
WinTop=0.0294
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.5
|
|
End Object
|
|
PerkBack4=PB4
|
|
|
|
Begin Object class=GUIImage Name=PB5
|
|
WinWidth=0.04
|
|
WinHeight=0.04
|
|
WinLeft=0.265
|
|
WinTop=0.0294
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.5
|
|
End Object
|
|
PerkBack5=PB5
|
|
|
|
Begin Object class=KFIndexedGUIImage Name=PSI0
|
|
WinWidth=0.040
|
|
WinHeight=0.040
|
|
WinLeft=0.090
|
|
WinTop=0.0314
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.6
|
|
OnClick=InternalOnClick
|
|
End Object
|
|
PerkSelectIcon0=PSI0
|
|
|
|
Begin Object class=KFIndexedGUIImage Name=PSI1
|
|
WinWidth=0.040
|
|
WinHeight=0.040
|
|
WinLeft=0.125
|
|
WinTop=0.0314
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.6
|
|
OnClick=InternalOnClick
|
|
End Object
|
|
PerkSelectIcon1=PSI1
|
|
|
|
Begin Object class=KFIndexedGUIImage Name=PSI2
|
|
WinWidth=0.040
|
|
WinHeight=0.040
|
|
WinLeft=0.160
|
|
WinTop=0.0314
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.6
|
|
OnClick=InternalOnClick
|
|
End Object
|
|
PerkSelectIcon2=PSI2
|
|
|
|
Begin Object class=KFIndexedGUIImage Name=PSI3
|
|
WinWidth=0.040
|
|
WinHeight=0.040
|
|
WinLeft=0.195
|
|
WinTop=0.0314
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.6
|
|
OnClick=InternalOnClick
|
|
End Object
|
|
PerkSelectIcon3=PSI3
|
|
|
|
Begin Object class=KFIndexedGUIImage Name=PSI4
|
|
WinWidth=0.040
|
|
WinHeight=0.040
|
|
WinLeft=0.230
|
|
WinTop=0.0314
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.6
|
|
OnClick=InternalOnClick
|
|
End Object
|
|
PerkSelectIcon4=PSI4
|
|
|
|
Begin Object class=KFIndexedGUIImage Name=PSI5
|
|
WinWidth=0.040
|
|
WinHeight=0.040
|
|
WinLeft=0.265
|
|
WinTop=0.0314
|
|
Image=Texture'KF_InterfaceArt_tex.Menu.Perk_box_unselected'
|
|
ImageStyle=ISTY_Scaled
|
|
Renderweight=0.6
|
|
OnClick=InternalOnClick
|
|
End Object
|
|
PerkSelectIcon5=PSI5
|
|
}
|
|
|