UGCProjects/GZJ/Script/UI/ChildWidgets/WBP_WeaponFittingList.lua
2025-01-08 22:46:12 +08:00

88 lines
2.5 KiB
Lua

---@class WBP_WeaponFittingList_C:UUserWidget
---@field REINST_WBP_WeaponFittingItem_C_0 UWBP_WeaponFittingItem_C
---@field REINST_WBP_WeaponFittingItem_C_1 UWBP_WeaponFittingItem_C
---@field REINST_WBP_WeaponFittingItem_C_2 UWBP_WeaponFittingItem_C
---@field REINST_WBP_WeaponFittingItem_C_3 UWBP_WeaponFittingItem_C
---@field VerticalBox_WidgetList UDynaVerticalBox
---@field WBP_WeaponFittingItem UWBP_WeaponFittingItem_C
---@field WBP_WeaponFittingItem_0 UWBP_WeaponFittingItem_C
---@field WBP_WeaponFittingItem_1 UWBP_WeaponFittingItem_C
---@field WBP_WeaponFittingItem_2 UWBP_WeaponFittingItem_C
--Edit Below--
local WBP_WeaponFittingList = { bInitDoOnce = false; };
-- 这里传入的是一个具体的列表{{id, count}, {id, count}, ...}
function WBP_WeaponFittingList:SetFittingListData(InDataArr)
for i = 1, 4 do
-- 通过 Id 进行数据获取
if i <= #InDataArr then
self:SetFittingListItemData(i, InDataArr[i])
else
self:CloseItemWidget(i)
end
end
end
function WBP_WeaponFittingList:SetFittingListItemData(InNum, InData)
local Widget = self:GetItemByIndex(InNum)
Widget:SetFittingItemData(InData)
end
function WBP_WeaponFittingList:CloseItemWidget(InNum)
local Widget = self:GetItemByIndex(InNum)
Widget:CloseWidget()
end
function WBP_WeaponFittingList:GetItemByIndex(InIndex)
return self.VerticalBox_WidgetList:GetChildAt(InIndex - 1)
end
function WBP_WeaponFittingList:Clear()
for i = 1, self.VerticalBox_WidgetList:GetChildrenCount() do
self:CloseItemWidget(i)
end
end
function WBP_WeaponFittingList:Tick(MyGeometry, InDeltaTime)
print(string.format("[WBP_WeaponFittingList:Tick] 列表组件执行 Tick"))
end
-- function WBP_WeaponFittingList:Destruct()
-- end
function WBP_WeaponFittingList:GetListItems()
local ret = {}
for i = 1, 4 do
table.insert(ret, self.VerticalBox_WidgetList:GetChildAt(i - 1))
end
return ret
end
-- {{ItemID, ItemCount}, {ItemID, ItemCount}}
function WBP_WeaponFittingList:SetItemListData(InData)
-- 将所有的都设置为空
self:Clear()
if InData == nil or #InData == 0 then
return
else
for i = 1, self.VerticalBox_WidgetList:GetChildrenCount() do
if i <= #InData then
self.VerticalBox_WidgetList:GetChildAt(i - 1):SetFittingItemData(InData[i])
end
end
end
end
--
function WBP_WeaponFittingList:OnDrop(MyGeometry, PointerEvent, Operation)
local ItemData = Operation:GetItemData()
local Type = Operation:GetDropItemType()
if Type == EItemDropType.CancelGenerate then
EventSystem:SendEvent(EventType.CloseGenerateItem, ItemData.ItemID)
else
return
end
end
return WBP_WeaponFittingList;