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

288 lines
7.4 KiB
Ucode

class GUILibraryMenu extends UT2k4MainPage;
const LIBLIST_CATS=3;
var automated GUIPanel p_Info;
var automated GUIListBox CategoryBox;
var automated GUILibraryItemsBox ItemsBox;
var automated GUISectionBackground CategoryBG,ItemBG,InfoBG;
var GUIList myCategories;
var GUIShowLibList myItems;
var GUILabel TimerBox;
//var KFBuyItemsList myItems;
var editconst noexport float SavedPitch;
var array<string> BuyListHeaders;
var array<string> BuyListItemNames;
//Use these values to modify/test
var int playerscore;
var float playerweight;
var float maxweight;
var float GameDifficulty;
var Sound SellSound,BuySound;
var array < GUIShowable > AllBuyableItems;
function InitComponent( GUIController MyController, GUIComponent MyOwner )
{
local int i;
Super.InitComponent( MyController, MyOwner );
CategoryBG.ManageComponent(CategoryBox);
ItemBG.ManageComponent(ItemsBox);
myCategories = CategoryBox.List;
for(i=0;i<LIBLIST_CATS;i++)
myCategories.Add(KFPlayerController(PlayerOwner()).LibraryListHeaders[i]);
//myCategories = CategoryBox.List;
myItems = ItemsBox.List;
}
event HandleParameters(string Param1, string Param2)
{
CategoryChange(self);
}
function KFBuyMenuClosed(optional Bool bCanceled)
{
local rotator NewRot;
// Reset player
NewRot = PlayerOwner().Rotation;
NewRot.Pitch = SavedPitch;
PlayerOwner().SetRotation(NewRot);
Super.OnClose(bCanceled);
}
event Opened(GUIComponent Sender)
{
local rotator PlayerRot;
Super.Opened(Sender);
// Set camera's pitch to zero when menu initialised (otherwise spinny weap goes kooky)
PlayerRot = PlayerOwner().Rotation;
SavedPitch = PlayerRot.Pitch;
PlayerRot.Yaw = PlayerRot.Yaw % 65536;
PlayerRot.Pitch = 0;
PlayerRot.Roll = 0;
PlayerOwner().SetRotation(PlayerRot);
playerscore = PlayerOwner().PlayerReplicationInfo.Score;
//Indicate that we're buying things.
//KFPlayerReplicationInfo(PlayerOwner().PlayerReplicationInfo).bBuyingStuff = true;
}
function NewInfo(GUIShowable b)
{
if(p_Info != None)
{
RemoveComponent(p_Info,true);
InfoBG.UnmanageComponent(p_Info);
p_Info.Closed(p_Info,false);
p_Info.free();
p_Info = None;
}
if(b != None)
{
p_Info = new b.GetPanelType(eLibCat(myCategories.Index));;
// GUILibraryMenuFooter(t_Footer).SetBuyMode(b.GetBuyCaption(eLibCat(myCategories.Index)),CanAfford(b)&&b.CanButtonMe(PlayerOwner(),myCategories.Index != 0),b.IsA('BuyableAmmo') && myCategories.Index !=0,b.Isa('BuyableAmmo') );
} else
{
p_Info = new class'GUILibInfoPanel';
GUILibraryMenuFooter(t_Footer).SetBuyMode("Buy",false,false,false);
}
p_Info.WinLeft=0;
p_Info.WinTop=0;
p_Info.WinWidth=1;
p_Info.WinHeight=1;
AppendComponent(p_Info,true);
InfoBG.ManageComponent(p_Info);
if(p_Info.IsA('GUILibInfoPanel'))
GUILibInfoPanel(p_Info).Display(b);
}
function bool CanAfford(GUIShowable b)
{
return myCategories.Index == 0 || (playerscore-b.cost >=0 && playerweight+b.weight <= maxweight);
}
function CategoryChange(GUIComponent Sender)
{
local int i,j;
myItems.Clear();
i = myCategories.Index;
for(j=0;j<allBuyableItems.length;j++)
{
if(AllBuyableItems[j].ShowMe(PlayerOwner().Pawn,eLibCat(i),self))
myItems.Add(AllBuyableItems[j]);
}
myItems.OnChange(myItems);
}
function BuyCurrent()
{
}
function BuyFill()
{
}
function bool CanAutoAmmo()
{
Return False;
}
function DoAutoAmmo()
{
}
function GUIShowable FindWeapon(class<Inventory> WeaponType)
{
Return None;
}
function InitAmmoForNewGun(class<Inventory> WeaponType)
{
}
function CloseSale(bool savePurchases)
{
}
defaultproperties
{
Begin Object Class=GUIListBox Name=BoxForCategories
bVisibleWhenEmpty=True
OnCreateComponent=BoxForCategories.InternalOnCreateComponent
Hint="Choose among these categories of equipment."
WinTop=0.110215
WinLeft=0.020000
WinWidth=0.400000
WinHeight=0.500000
TabOrder=1
bBoundToParent=True
bScaleToParent=True
OnChange=GUILibraryMenu.CategoryChange
End Object
CategoryBox=GUIListBox'KFGui.GUILibraryMenu.BoxForCategories'
Begin Object Class=GUILibraryItemsBox Name=itmbox
bVisibleWhenEmpty=True
bSorted=True
OnCreateComponent=itmbox.InternalOnCreateComponent
Hint="Equipment in this category"
WinHeight=1.000000
TabOrder=1
bBoundToParent=True
bScaleToParent=True
End Object
ItemsBox=GUILibraryItemsBox'KFGui.GUILibraryMenu.itmbox'
Begin Object Class=AltSectionBackground Name=catbg
Caption="Categories"
WinTop=0.060215
WinLeft=0.010000
WinWidth=0.440000
WinHeight=0.383940
OnPreDraw=catbg.InternalPreDraw
End Object
CategoryBG=AltSectionBackground'KFGui.GUILibraryMenu.catbg'
Begin Object Class=AltSectionBackground Name=itmbg
Caption="Items"
WinTop=0.060215
WinLeft=0.480000
WinWidth=0.500000
WinHeight=0.880000
OnPreDraw=itmbg.InternalPreDraw
End Object
ItemBG=AltSectionBackground'KFGui.GUILibraryMenu.itmbg'
Begin Object Class=AltSectionBackground Name=infbg
Caption="Info"
WinTop=0.454030
WinLeft=0.010000
WinWidth=0.440000
WinHeight=0.486185
OnPreDraw=infbg.InternalPreDraw
End Object
InfoBG=AltSectionBackground'KFGui.GUILibraryMenu.infbg'
Begin Object Class=GUITabControl Name=PageTabs
bDockPanels=True
TabHeight=0.040000
WinLeft=0.010000
WinWidth=0.980000
WinHeight=0.040000
RenderWeight=0.490000
TabOrder=3
bAcceptsInput=True
OnActivate=PageTabs.InternalOnActivate
End Object
c_Tabs=GUITabControl'KFGui.GUILibraryMenu.PageTabs'
/*
Begin Object Class=GUIHeader Name=GamePageHeader
Caption="Buy Equipment"
RenderWeight=0.300000
End Object
t_Header=GUIHeader'KFGui.GUILibraryMenu.GamePageHeader'
*/
Begin Object Class=GUILibraryMenuFooter Name=LibFooter
WinTop=0.957943
RenderWeight=0.300000
TabOrder=8
OnPreDraw=BuyFooter.InternalOnPreDraw
End Object
t_Footer=GUILibraryMenuFooter'KFGui.GUILibraryMenu.LibFooter'
Begin Object Class=BackgroundImage Name=KFBackground
Image=Texture'2K4Menus.Controls.LockerBG'
ImageStyle=ISTY_Tiled
RenderWeight=0.010000
bBoundToParent=True
bScaleToParent=True
End Object
i_Background=BackgroundImage'KFGui.GUILibraryMenu.KFBackground'
Begin Object Class=GUILabel Name=TimerTextBox
//OnCreateComponent=lbChat.InternalOnCreateComponent
FontScale=FNS_Medium
WinTop=0.25
WinLeft=0.10000
WinWidth=0.2
WinHeight=0.2
//bBoundToParent=True
//bScaleToParent=True
bNeverFocus=True
Caption="SHOP CLOSES IN: "
//StyleName="none"
End Object
TimerBox=GUILabel'KFGui.GUILibraryMenu.TimerTextBox'
bAllowedAsLast=True
// OnClose=GUILibraryMenu.KFBuyMenuClosed
SellSound=Sound'KF_InventorySnd.Cash_Pickup'
BuySound = Sound 'PatchSounds.slide1-5'
}