2025-01-04 23:00:19 +08:00

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