147 lines
4.0 KiB
Lua
147 lines
4.0 KiB
Lua
---@class W_ShopItem_C:UUserWidget
|
|
---@field SelectAnim UWidgetAnimation
|
|
---@field Button_Item UButton
|
|
---@field Image_0 UImage
|
|
---@field Image_1 UImage
|
|
---@field Image_2 UImage
|
|
---@field Image_BG UImage
|
|
---@field Image_BG2 UImage
|
|
---@field Image_Floor UImage
|
|
---@field Image_Item UImage
|
|
---@field Overlay_NameMain UOverlay
|
|
---@field Overlay_Recommend UOverlay
|
|
---@field Overlay_ShowNum UOverlay
|
|
---@field TextBlock_GoldCoin UTextBlock
|
|
---@field TextBlock_QuantityOwned UTextBlock
|
|
---@field WidgetSwitcher_BG UWidgetSwitcher
|
|
--Edit Below--
|
|
---@type W_ShopItem_C
|
|
local W_ShopItem = {
|
|
bInitDoOnce = false;
|
|
ItemID = -1;
|
|
};
|
|
|
|
--[==[ Construct
|
|
function W_ShopItem:Construct()
|
|
|
|
end
|
|
-- Construct ]==]
|
|
|
|
-- function W_ShopItem:Tick(MyGeometry, InDeltaTime)
|
|
|
|
-- end
|
|
|
|
-- function W_ShopItem:Destruct()
|
|
|
|
-- end
|
|
|
|
function W_ShopItem:LuaInit()
|
|
if self.bInitDoOnce then
|
|
return;
|
|
end
|
|
self.bInitDoOnce = true;
|
|
self.Button_Item.OnClicked:Add(self.SelectItem, self)
|
|
|
|
UGCEventSystem.AddListener(EventEnum.PlayerBuyCallBack, self.DelayUpdateShowInfo, self)
|
|
end
|
|
|
|
|
|
|
|
function W_ShopItem:BindUpdateSelectItem(Func, Obj)
|
|
self.UpdateSelectDelegation = {Func = Func, Obj = Obj}
|
|
end
|
|
|
|
function W_ShopItem:SelectItem()
|
|
if self.UpdateSelectDelegation then
|
|
if self.UpdateSelectDelegation.Obj then
|
|
self.UpdateSelectDelegation.Func(self.UpdateSelectDelegation.Obj, self)
|
|
else
|
|
self.UpdateSelectDelegation.Func(self)
|
|
end
|
|
end
|
|
end
|
|
|
|
function W_ShopItem:InitSelectInfo(ItemID)
|
|
self:LuaInit()
|
|
|
|
self.ItemID = ItemID
|
|
|
|
self.Image_Item:SetBrushFromTexture(UGCSystemLibrary.LoadAsset(ItemTable.AllItem[ItemID].SmallPic))
|
|
self.TextBlock_GoldCoin:SetText(ItemTable.GetItemPrice(ItemID))
|
|
self:UpdateItemShowInfo()
|
|
|
|
|
|
end
|
|
|
|
---@param bIsSelect: bool
|
|
function W_ShopItem:SetSelect(bIsSelect)
|
|
self.WidgetSwitcher_BG:SetActiveWidgetIndex((bIsSelect and 1 or 0))
|
|
if bIsSelect then
|
|
self:PlayAnimation(self.SelectAnim, 0, 0, EUMGSequencePlayMode.PingPong, 1)
|
|
else
|
|
self:StopAnimation(self.SelectAnim)
|
|
end
|
|
end
|
|
|
|
function W_ShopItem:GetItemID()
|
|
return self.ItemID
|
|
end
|
|
|
|
function W_ShopItem:ResetItemShowInfo()
|
|
self:ShowRecommend(false)
|
|
self:SetShowNum(-1)
|
|
end
|
|
|
|
function W_ShopItem:UpdateItemShowInfo()
|
|
self:ResetItemShowInfo()
|
|
local PlayerPawn = UGCGameSystem.GetPlayerPawnByPlayerKey(UGCSystemLibrary.GetLocalPlayerKey())
|
|
local SelfVisibility = self:GetVisibility()
|
|
if SelfVisibility == ESlateVisibility.Collapsed or SelfVisibility == ESlateVisibility.Hidden or (not UE.IsValid(PlayerPawn)) then
|
|
return
|
|
end
|
|
|
|
local PlayerHaveItemNum = UGCBackPackSystem.GetItemCount(PlayerPawn, self.ItemID)
|
|
self:SetShowNum(PlayerHaveItemNum)
|
|
|
|
|
|
local ItemMainClass = ItemTable.GetItemMainClass(self.ItemID)
|
|
local NowWeapons = GetPlayerShootWeaponIDs(UGCSystemLibrary.GetLocalPlayerKey())
|
|
if ItemMainClass == 2 then
|
|
for i, WeaponID in pairs(NowWeapons) do
|
|
if PartIsWeaopnCanBeUsed(WeaponID, self.ItemID) then
|
|
self:ShowRecommend(true)
|
|
break
|
|
end
|
|
end
|
|
elseif ItemMainClass == 3 then
|
|
for i, WeaponID in pairs(NowWeapons) do
|
|
if GetItemWeaponAmmunitionItemID(WeaponID) == self.ItemID then
|
|
self:ShowRecommend(true)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function W_ShopItem:DelayUpdateShowInfo()
|
|
UGCEventSystem.SetTimer(self, self.UpdateItemShowInfo, 0.3)
|
|
end
|
|
|
|
function W_ShopItem:ShowRecommend(bShow)
|
|
if bShow then
|
|
self.Overlay_Recommend:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
|
else
|
|
self.Overlay_Recommend:SetVisibility(ESlateVisibility.Collapsed)
|
|
end
|
|
end
|
|
|
|
function W_ShopItem:SetShowNum(NewNum)
|
|
if NewNum > 0 then
|
|
self.Overlay_ShowNum:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
|
|
self.TextBlock_QuantityOwned:SetText(tostring(NewNum))
|
|
else
|
|
self.Overlay_ShowNum:SetVisibility(ESlateVisibility.Collapsed)
|
|
end
|
|
end
|
|
|
|
return W_ShopItem; |