88 lines
2.4 KiB
Lua
88 lines
2.4 KiB
Lua
---@class WB_SplitWeaponList_C:UUserWidget
|
|
---@field ScrollBox_Item1 UScrollBox
|
|
---@field ScrollBox_Item2 UScrollBox
|
|
---@field VerticalBox_Items UVerticalBox
|
|
--Edit Below--
|
|
---@type WB_SplitWeaponList_C
|
|
local WB_SplitWeaponList = { bInitDoOnce = false }
|
|
|
|
function WB_SplitWeaponList:Construct()
|
|
self:LuaInit();
|
|
end
|
|
|
|
function WB_SplitWeaponList:LuaInit()
|
|
if self.bInitDoOnce then return ; end
|
|
|
|
self.bInitDoOnce = true;
|
|
end
|
|
|
|
WB_SplitWeaponList.Owner = nil;
|
|
WB_SplitWeaponList.Func = nil;
|
|
|
|
function WB_SplitWeaponList:Init(InOwner, InFunc)
|
|
self.Owner = InOwner;
|
|
self.Func = InFunc;
|
|
end
|
|
|
|
function WB_SplitWeaponList:SetTypes(InTypes)
|
|
-- 检查这是几个
|
|
local TypeCount = table.getCount(InTypes);
|
|
local Weapons = GetWeaponIdsByTypeNew(InTypes[1]);
|
|
-- 设置数据
|
|
self:SetWeapons(self.ScrollBox_Item1, Weapons, 1);
|
|
if TypeCount == 1 then
|
|
self.VerticalBox_Items:GetChildAt(1):SetVisibility(ESlateVisibility.Collapsed);
|
|
else
|
|
-- 再次设置
|
|
Weapons = GetWeaponIdsByTypeNew(InTypes[2]);
|
|
self:SetWeapons(self.ScrollBox_Item2, Weapons, 2);
|
|
self.VerticalBox_Items:GetChildAt(1):SetVisibility(ESlateVisibility.SelfHitTestInvisible);
|
|
end
|
|
|
|
-- 默认设置为 1
|
|
self:OnClickItem(self.ScrollBox_Item1:GetChildAt(0))
|
|
self:OnClickItem(self.ScrollBox_Item2:GetChildAt(0))
|
|
end
|
|
|
|
function WB_SplitWeaponList:SetWeapons(InBox, InWeaponsList, Signal)
|
|
UITool.AdaptChildren(InBox, table.getCount(InWeaponsList), ObjectPath.WB_SelectWeaponItem, function(Widget)
|
|
Widget:Init(self, self.OnClickItem, Signal);
|
|
end);
|
|
|
|
-- 设置数据进去
|
|
UITool.ForeachAllChildren(InBox, function(index, Widget)
|
|
if InWeaponsList[index] then
|
|
Widget:SetItemId(InWeaponsList[index]);
|
|
Widget:SetVisibility(ESlateVisibility.SelfHitTestInvisible);
|
|
else
|
|
Widget:SetVisibility(ESlateVisibility.Collapsed);
|
|
end
|
|
end)
|
|
end
|
|
|
|
WB_SplitWeaponList.CurrItems = {};
|
|
WB_SplitWeaponList.CurrSelectItems = {};
|
|
|
|
function WB_SplitWeaponList:OnClickItem(ChildWidget)
|
|
-- 通过遍历的方式进行寻找
|
|
local Num = ChildWidget:GetSignal()
|
|
if self.CurrItems[Num] ~= nil then
|
|
self.CurrItems[Num]:SetSelect(false);
|
|
end
|
|
self.CurrItems[Num] = ChildWidget;
|
|
self.CurrItems[Num]:SetSelect(true);
|
|
|
|
self.CurrSelectItems[Num] = ChildWidget:GetItemId();
|
|
|
|
self.Func(self.Owner, self.CurrSelectItems)
|
|
end
|
|
|
|
-- function WB_SplitWeaponList:Tick(MyGeometry, InDeltaTime)
|
|
|
|
-- end
|
|
|
|
-- function WB_SplitWeaponList:Destruct()
|
|
|
|
-- end
|
|
|
|
return WB_SplitWeaponList |