UGCProjects/OneShotKill/Script/UI/SelectWeapon/Item/WB_WeaponSelectItem.lua
2025-01-04 23:00:19 +08:00

113 lines
3.8 KiB
Lua

---@class WB_WeaponSelectItem_C:UUserWidget
---@field Button_Select UNewButton
---@field Image_IsSelect UImage
---@field TextBlock_TextName UTextBlock
---@field WeaponInfo1 UWB_WeaponItem_C
---@field WeaponInfo2 UWB_WeaponItem_C
--Edit Below--
local WB_WeaponSelectItem = {
bInitDoOnce = false;
bIsSelect = false;
ItemID = 0;
Weapons = nil;
};
--[==[ Construct
function WB_WeaponSelectItem:Construct()
end
-- Construct ]==]
-- function WB_WeaponSelectItem:Tick(MyGeometry, InDeltaTime)
-- end
-- function WB_WeaponSelectItem:Destruct()
-- end
function WB_WeaponSelectItem:LuaInit()
if self.bInitDoOnce then
return;
end
self.bInitDoOnce = true;
UGCLogSystem.Log("[WB_WeaponSelectItem_LuaInit]")
WidgetLibrary.BindButtonClicked(self.Button_Select, self.SelectWeaponCombination, self)
UGCEventSystem.AddListener(ArchiveDataConfig.GetParamNotifyEvent(ArchiveDataConfig.EArchiveType.WeaponComb), self.UpdateWeaponComb, self)
self.Button_Select:SetTouchMethod(EButtonTouchMethod.PreciseTap)
end
function WB_WeaponSelectItem:Init(InCombinationType, InCombinationIndex)
self:LuaInit()
self.CombinationIndex = InCombinationIndex
self.TextBlock_TextName:SetText("配置" .. self.CombinationIndex)
local SavedWeaponComb = ArchiveDataConfig.GetPlayerArchiveDataFromType(UGCSystemLibrary.GetLocalPlayerKey(), ArchiveDataConfig.EArchiveType.WeaponComb)
local CombinationList = WeaponSelectionCombinationConfig.WeaponCombinationList[InCombinationType].Weapon
if SavedWeaponComb and SavedWeaponComb[self.CombinationIndex] then
self:UpdateWeapons(SavedWeaponComb[self.CombinationIndex])
elseif CombinationList and CombinationList[self.CombinationIndex] then
self:UpdateWeapons(CombinationList[self.CombinationIndex])
end
end
function WB_WeaponSelectItem:UpdateWeaponComb()
UGCLogSystem.Log("[WB_WeaponSelectItem_UpdateWeaponComb] 1")
local WeaponComb = ArchiveDataConfig.GetPlayerArchiveDataFromType(UGCSystemLibrary.GetLocalPlayerKey(), ArchiveDataConfig.EArchiveType.WeaponComb)
if WeaponComb and WeaponComb[self.CombinationIndex] then
UGCLogSystem.Log("[WB_WeaponSelectItem_UpdateWeaponComb] 2")
if self.Weapons == nil or WeaponComb[self.CombinationIndex][1] ~= self.Weapons[1] or WeaponComb[self.CombinationIndex][2] ~= self.Weapons[2] then
self:UpdateWeapons(WeaponComb[self.CombinationIndex])
UGCLogSystem.Log("[WB_WeaponSelectItem_UpdateWeaponComb] 3")
end
end
end
function WB_WeaponSelectItem:UpdateWeapons(InWeapons)
self.Weapons = table.DeepCopy(InWeapons)
if self.Weapons then
self.WeaponInfo1:SetWeaponID(self.Weapons[1])
if self.Weapons[2] then
self.WeaponInfo2:SetWeaponID(self.Weapons[2])
self.WeaponInfo2:SetVisWeaponInfo(true)
else
self.WeaponInfo2:SetVisWeaponInfo(false)
end
self:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
else
self:SetVisibility(ESlateVisibility.Collapsed)
end
end
function WB_WeaponSelectItem:GetCombinationIndex()
return self.CombinationIndex
end
function WB_WeaponSelectItem:SelectWeaponCombination()
if self.SelectCallBackFunc then
if self.SelectCallBackObj then
self.SelectCallBackFunc(self.SelectCallBackObj, self:GetCombinationIndex())
else
self.SelectCallBackFunc(self:GetCombinationIndex())
end
end
end
function WB_WeaponSelectItem:BindSelectCallBack(InFunc, InObj)
self.SelectCallBackFunc = InFunc
self.SelectCallBackObj = InObj
end
function WB_WeaponSelectItem:SetSelect(IsSelect)
if IsSelect then
self.Image_IsSelect:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
else
self.Image_IsSelect:SetVisibility(ESlateVisibility.Collapsed)
end
end
return WB_WeaponSelectItem;