---@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") UGCLogSystem.LogTree("[WB_WeaponSelectItem_UpdateWeaponComb] WeaponComb:", WeaponComb) UGCLogSystem.LogTree("[WB_WeaponSelectItem_UpdateWeapons] self.Weapons", self.Weapons) 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 UGCLogSystem.LogTree("[WB_WeaponSelectItem_UpdateWeapons] Weapons", self.Weapons) 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) UGCLogSystem.Log("[WB_WeaponSelectItem_UpdateWeapons] Finish") 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;