---@class WB_SelectWeaponItems_C:UUserWidget ---@field Button_Item UNewButton ---@field Overlay_Lock UOverlay ---@field TextBlock_Kill UTextBlock ---@field VerticalBox_Weapons UVerticalBox ---@field WidgetSwitcher_IsSelect UWidgetSwitcher --Edit Below-- ---@type WB_SelectWeaponItems_C local WB_SelectWeaponItems = { bInitDoOnce = false; }; function WB_SelectWeaponItems:Construct() self:LuaInit(); end function WB_SelectWeaponItems:LuaInit() if self.bInitDoOnce then return ; end self.Button_Item.OnClicked:Add(self.OnClickItem, self) UITool.HideAllChildren(self.VerticalBox_Weapons); UITool.EnableButtonScroll(self.Button_Item); self.bInitDoOnc = true; end WB_SelectWeaponItems.Owner = nil; WB_SelectWeaponItems.Func = nil; function WB_SelectWeaponItems:Init(InOwner, InFunc) self.Owner = InOwner; self.Func = InFunc; self:LuaInit(); end WB_SelectWeaponItems.ItemIds = {}; WB_SelectWeaponItems.ItemId = nil; function WB_SelectWeaponItems:SetItemId(InItemIds) -- 两个都隐藏 self.ItemIds = InItemIds; UITool.HideAllChildren(self.VerticalBox_Weapons); if type(InItemIds) == 'table' then for i = 1, table.getCount(InItemIds) do local Item = self.VerticalBox_Weapons:GetChildAt(i - 1); self.ItemId = InItemIds[i]; Item:SetItemId(InItemIds[i]); Item:SetVisibility(ESlateVisibility.HitTestInvisible); end elseif type(InItemIds) == 'number' then local Item = self.VerticalBox_Weapons:GetChildAt(0) self.ItemId = InItemIds; Item:SetItemId(InItemIds); Item:SetVisibility(ESlateVisibility.HitTestInvisible); end end WB_SelectWeaponItems.Locked = false; WB_SelectWeaponItems.NeedKill = 0; function WB_SelectWeaponItems:GetKillNum() if self.ItemId == nil then return 0 end local SelectedWeapons = MiniGameConfig[MiniGameMapType.BoltGod1].Params.SelectedWeapons for i, v in pairs(SelectedWeapons) do if EnglishNamedWeapon[i] ~= nil and EnglishNamedWeapon[i].ItemId == self.ItemId then return v; end end return 0; end function WB_SelectWeaponItems:SetKillNum(InNum) UGCLogSystem.Log("[WB_SelectWeaponItems:SetKillNum] InNum = %d, NeedKill = %d", InNum, self.NeedKill); if self.NeedKill == 0 then -- 检测并获取 self.NeedKill = self:GetKillNum(); if self.NeedKill == 0 then UGCLogSystem.Log("[WB_SelectWeaponItems:SetKillNum] NeedKill = %d", self.NeedKill); end end if InNum < self.NeedKill then self:SetLocked(true); end if self.Locked then if InNum >= self.NeedKill then -- 开启 self:SetLocked(false); --UITool.ShowTips("有新的武器可以选择!!") WidgetManager:GetPanel(WidgetConfig.EUIType.Main, function(Widget) Widget:ShowTip(true); end) end end self.TextBlock_Kill:SetText(string.format('%d/%d', InNum, self.NeedKill)); end --- 这是初始设置 function WB_SelectWeaponItems:SetWeaponItemInfo(index, InWeaponInfo) self:SetItemId(InWeaponInfo.ItemId); self.NeedKill = InWeaponInfo.Kill or 0; if InWeaponInfo.Kill > 0 then -- 设置为不可用 self:SetLocked(true); -- 尝试获取一下 if GlobalMiniMode ~= nil and LocalPlayerKey ~= nil and GlobalMiniMode.PlayerKDAs[LocalPlayerKey] ~= nil then local Kill = GlobalMiniMode.PlayerKDAs[LocalPlayerKey].Kill if Kill and Kill >= InWeaponInfo.Kill then self:SetLocked(false); self.TextBlock_Kill:SetText(string.format('%d/%d', Kill, InWeaponInfo.Kill)); else self.TextBlock_Kill:SetText(string.format('0/%d', InWeaponInfo.Kill)); end else self.TextBlock_Kill:SetText(string.format('0/%d', InWeaponInfo.Kill)); end else self:SetLocked(false); end end function WB_SelectWeaponItems:SetLocked(IsLock) self.Locked = IsLock; if IsLock then self.Overlay_Lock:SetVisibility(ESlateVisibility.SelfHitTestInvisible); else self.Overlay_Lock:SetVisibility(ESlateVisibility.Collapsed); end end function WB_SelectWeaponItems:OnClickItem() -- 直接发送过去 if not self.Locked then self.Func(self.Owner, self); else UITool.ShowTips("还需要淘汰%d人才能解锁该武器", self.NeedKill - GlobalMiniMode.PlayerKDAs[LocalPlayerKey].Kill); end end function WB_SelectWeaponItems:GetItemIds() return self.ItemIds; end WB_SelectWeaponItems.IsSelect = false; function WB_SelectWeaponItems:SetSelect(IsSelect) self.IsSelect = IsSelect; self.WidgetSwitcher_IsSelect:SetActiveWidgetIndex(IsSelect and 1 or 0); --self.Button_Item:SetIsEnabled(false); end function WB_SelectWeaponItems:GetIsSelect() return self.IsSelect; end -- function WB_SelectWeaponItems:Tick(MyGeometry, InDeltaTime) -- end -- function WB_SelectWeaponItems:Destruct() -- end return WB_SelectWeaponItems;