rott/kf_sources/KFGui/Classes/KFDLCList.uc
2026-07-14 20:27:09 +07:00

338 lines
11 KiB
Ucode

class KFDLCList extends GUIVertList;
// Settings
var() float HorizontalSpacing;
var() float VerticalSpacing;
var() array<string> CharacterNames;
var() array<texture> CharacterUnownedTextures;
var() array<texture> CharacterOwnedTextures;
var() array<int> WeaponAppIDs;
var() array<texture> WeaponUnownedTextures;
var() array<texture> WeaponOwnedTextures;
var() texture OverlayTexture;
var() texture HoverTexture;
// Display
var array<int> bItemIsCharacter;
var array<int> bItemOwned;
var array<string> ItemAppID;
var array<texture> ItemBackground;
var int IgnoreWeaponItem;
var int IgnoreCharacterItem;
// State
var int ItemHoverIndex;
var PlayerController MyPCOwner;
var SteamStatsAndAchievementsBase MyStatsAndAchievements;
event Closed(GUIComponent Sender, bool bCancelled)
{
MyPCOwner = none;
MyStatsAndAchievements = none;
super.Closed(Sender, bCancelled);
}
function InitList(PlayerController PCOwner, SteamStatsAndAchievementsBase StatsAndAchievements, bool bShowCharacters, bool bShowWeapons)
{
local int i, j;
OnDrawItem = DrawDLCItem;
// Hold onto our references
MyPCOwner = PCOwner;
MyStatsAndAchievements = StatsAndAchievements;
if ( ItemBackground.Length == 0 )
{
// Set up the Unowned Weapon DLC items
if ( bShowWeapons )
{
// Show newest items first
for ( i = WeaponAppIDs.Length - 1; i >= 0; i-- )
{
if( i == IgnoreWeaponItem )
{
continue;
}
if ( !MyStatsAndAchievements.PlayerOwnsWeaponDLC(WeaponAppIDs[i]) )
{
bItemIsCharacter[bItemIsCharacter.Length] = 0;
bItemOwned[bItemOwned.Length] = 0;
ItemAppID[ItemAppID.Length] = string(WeaponAppIDs[i]);
ItemBackground[ItemBackground.Length] = WeaponUnownedTextures[i];
}
}
}
// Set up the Unowned Character DLC items
if ( bShowCharacters )
{
// Show newest items first
for ( i = CharacterNames.Length - 1; i >= 0; i-- )
{
if( i == IgnoreCharacterItem )
{
continue;
}
if ( !MyPCOwner.CharacterAvailable(CharacterNames[i]) )
{
bItemIsCharacter[bItemIsCharacter.Length] = 1;
bItemOwned[bItemOwned.Length] = 0;
ItemAppID[ItemAppID.Length] = CharacterNames[i];
ItemBackground[ItemBackground.Length] = CharacterUnownedTextures[i];
}
}
}
// Set up the Owned Weapon DLC items
if ( bShowWeapons )
{
// Show newest items first
for ( i = WeaponAppIDs.Length - 1; i >= 0; i-- )
{
if( i == IgnoreWeaponItem )
{
continue;
}
if ( MyStatsAndAchievements.PlayerOwnsWeaponDLC(WeaponAppIDs[i]) )
{
bItemIsCharacter[bItemIsCharacter.Length] = 0;
bItemOwned[bItemOwned.Length] = 1;
ItemAppID[ItemAppID.Length] = string(WeaponAppIDs[i]);
ItemBackground[ItemBackground.Length] = WeaponOwnedTextures[i];
}
}
}
// Set up the Owned Character DLC items
if ( bShowCharacters )
{
// Show newest items first
for ( i = CharacterNames.Length - 1; i >= 0; i-- )
{
if( i == IgnoreCharacterItem )
{
continue;
}
if ( MyPCOwner.CharacterAvailable(CharacterNames[i]) )
{
bItemIsCharacter[bItemIsCharacter.Length] = 1;
bItemOwned[bItemOwned.Length] = 1;
ItemAppID[ItemAppID.Length] = CharacterNames[i];
ItemBackground[ItemBackground.Length] = CharacterOwnedTextures[i];
}
}
}
// Update the ItemCount and select the first item
ItemCount = Ceil(float(ItemBackground.Length) / 3.0);
SetIndex(0);
if ( bNotify )
{
CheckLinkedObjects(Self);
}
if ( MyScrollBar != none )
{
MyScrollBar.AlignThumb();
}
}
}
function DrawDLCItem(Canvas Canvas, int Index, float X, float Y, float Width, float Height, bool bSelected, bool bPending)
{
local float ThisItemWidth, ThisItemHeight;
local int HoverIndex, ItemIndex, i;
ItemIndex = Index * 3;
ThisItemWidth = (Width - (2 * HorizontalSpacing)) / 3.0;
ThisItemHeight = Height - VerticalSpacing;
// Setup our cheat for Mouse Click reaction
if ( Index == Top )
{
ItemHoverIndex = -1;
}
// Determine if the Mouse is hovering over this row
HoverIndex = -1;
if ( Controller.MouseY - Y >= 0.0 && Controller.MouseY - Y <= ThisItemHeight )
{
if ( Controller.MouseX - X >= 0.0 && Controller.MouseX - X <= Width )
{
if ( Controller.MouseX - X <= ThisItemWidth )
{
HoverIndex = 0;
ItemHoverIndex = ItemIndex;
}
else if ( Controller.MouseX - X >= ThisItemWidth + HorizontalSpacing && Controller.MouseX - X <= ThisItemWidth * 2 + HorizontalSpacing )
{
HoverIndex = 1;
ItemHoverIndex = ItemIndex + 1;
}
else if ( Controller.MouseX - X >= ThisItemWidth * 2 + HorizontalSpacing * 2 )
{
HoverIndex = 2;
ItemHoverIndex = ItemIndex + 2;
}
}
}
// Draw this row of items
for ( i = 0; i < 3 && ItemIndex < ItemBackground.Length; i++ )
{
// Initialize the Canvas
Canvas.Style = 1;
Canvas.SetDrawColor(255, 255, 255, 255);
// Draw the Item Background
Canvas.SetPos(X, Y);
Canvas.DrawTile(ItemBackground[ItemIndex], ThisItemWidth, ThisItemHeight, 0, 0, 256, 128);
// Draw an Overlay, if necessary
if ( bItemOwned[ItemIndex] == 0 )
{
Canvas.SetPos(X, Y);
// Draw Hover overlay if mouse is within item
if ( i == HoverIndex )
{
Canvas.DrawTile(HoverTexture, ThisItemWidth, ThisItemHeight, 0, 0, 256, 128);
}
else
{
Canvas.DrawTile(OverlayTexture, ThisItemWidth, ThisItemHeight, 0, 0, 256, 128);
}
}
X += ThisItemWidth + HorizontalSpacing;
ItemIndex++;
}
}
function float DLCItemHeight(Canvas c)
{
return (MenuOwner.ActualHeight() / 3.0) - 1.0;
}
function bool InternalOnClick(GUIComponent Sender)
{
if ( !IsInClientBounds() || ItemsPerPage==0 )
return false;
if ( bItemOwned[ItemHoverIndex] == 0 )
{
if ( bItemIsCharacter[ItemHoverIndex] == 1 )
{
MyPCOwner.PurchaseCharacter(ItemAppID[ItemHoverIndex]);
}
else
{
MyStatsAndAchievements.PurchaseWeaponDLC(int(ItemAppID[ItemHoverIndex]));
}
}
}
defaultproperties
{
HorizontalSpacing=8.0
VerticalSpacing=5.0
CharacterNames[0]="FoundryWorker_Aldridge"
CharacterUnownedTextures[0]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_Outbreak'
CharacterOwnedTextures[0]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_Outbreak'
CharacterNames[1]="Mr_Foster"
CharacterUnownedTextures[1]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_Nightfall'
CharacterOwnedTextures[1]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_Nightfall'
CharacterNames[2]="Harold_Hunt"
CharacterUnownedTextures[2]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_PostMortem'
CharacterOwnedTextures[2]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_PostMortem'
CharacterNames[3]="Captian_Wiggins"
CharacterUnownedTextures[3]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_London'
CharacterOwnedTextures[3]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_London'
CharacterNames[4]="Steampunk_Berserker"
CharacterUnownedTextures[4]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_Steampunk'
CharacterOwnedTextures[4]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_Steampunk'
CharacterNames[5]="Steampunk_Commando"
CharacterUnownedTextures[5]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_SteamPTwo'
CharacterOwnedTextures[5]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_SteamPTwo'
CharacterNames[6]="Dave_The_Butcher_Roberts"
CharacterUnownedTextures[6]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_UrbanNightmare'
CharacterOwnedTextures[6]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_UrbanNightmare'
CharacterNames[7]="Harold_Lott"
CharacterUnownedTextures[7]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_MoneyMoney'
CharacterOwnedTextures[7]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_MoneyMoney'
CharacterNames[8]="Ash_Harding"
CharacterUnownedTextures[8]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_Ash'
CharacterOwnedTextures[8]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_Ash'
CharacterNames[9]="ChickenNator"
CharacterUnownedTextures[9]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_Chickenator'
CharacterOwnedTextures[9]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_Chickenator'
CharacterNames[10]="DAR"
CharacterUnownedTextures[10]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_Robot'
CharacterOwnedTextures[10]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_Robot'
CharacterNames[11]="Mrs_Foster"
CharacterUnownedTextures[11]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_MrsFoster'
CharacterOwnedTextures[11]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_MrsFoster'
CharacterNames[12]="Reggie"
CharacterUnownedTextures[12]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_Reggie'
CharacterOwnedTextures[12]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_Reggie'
CharacterNames[13]="Harchier_Spebbington_II"
CharacterUnownedTextures[13]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_NewHarchier'
CharacterOwnedTextures[13]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_NewHarchier'
// MR. MAGMA & VOLTAGE PLACEHOLDER
CharacterNames[14]="Mr_Magma"
CharacterUnownedTextures[14]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_SkullyFoster'
CharacterOwnedTextures[14]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_SkullyFoster'
CharacterNames[15]="New_Bundles"
CharacterUnownedTextures[15]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Desat_NewBundles'
CharacterOwnedTextures[15]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_NewBundles'
WeaponAppIDs[0]=210934
WeaponUnownedTextures[0]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Desat_Community'
WeaponOwnedTextures[0]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Owned_Community'
WeaponAppIDs[1]=210938
WeaponUnownedTextures[1]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Desat_Gold-Pack'
WeaponOwnedTextures[1]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Owned_Gold-Pack'
WeaponAppIDs[2]=210943
WeaponUnownedTextures[2]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Desat_CommunitySteamP'
WeaponOwnedTextures[2]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Owned_CommunitySteamP'
WeaponAppIDs[3]=210944
WeaponUnownedTextures[3]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Desat_Gold-Pack2'
WeaponOwnedTextures[3]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Owned_Gold-Pack2'
WeaponAppIDs[4]=258751
WeaponUnownedTextures[4]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Desat_UsVSThemWeaponPack'
WeaponOwnedTextures[4]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Owned_UsVSThemWeaponPack'
WeaponAppIDs[5]=258752
WeaponUnownedTextures[5]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Desat_CamoWeaponPack'
WeaponOwnedTextures[5]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Owned_CamoWeaponPack'
WeaponAppIDs[6]=309991
WeaponUnownedTextures[6]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Desat_Neon'
WeaponOwnedTextures[6]=Texture'KF_DLC.Weapons.UI_KFDLC_Weapons_Owned_Neon'
WeaponAppIDs[7]=326960
WeaponUnownedTextures[7]=Texture'KF_DLC.Weapons.UI_KFDLC_Characters_Desat_ToyMaster'
WeaponOwnedTextures[7]=Texture'KF_DLC.Characters.UI_KFDLC_Characters_Owned_ToyMaster'
OverlayTexture=Texture'KF_DLC.Characters.UI_KFDLC_Unselected_BuyNow'
HoverTexture=Texture'KF_DLC.Characters.UI_KFDLC_MouseOver_BuyNow'
FontScale=FNS_Medium
GetItemHeight=KFDLCList.DLCItemHeight
IgnoreWeaponItem=7
IgnoreCharacterItem=15
}