159 lines
4.5 KiB
Lua
159 lines
4.5 KiB
Lua
---@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; |