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

144 lines
4.9 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---@class WB_SelectIncrease_C:UAEUserWidget
---@field CanvasPanel_SelectMenu UCanvasPanel
---@field HorizontalBox_Buffs UHorizontalBox
---@field Image_0 UImage
---@field Image_CD UImage
---@field NewButton_AutoSelect UNewButton
---@field TextBlock_AddCount UTextBlock
---@field WidgetSwitcher_AutoSelect UWidgetSwitcher
---@field WidgetSwitcher_ChangeAutoSelect UWidgetSwitcher
--Edit Below--
local WB_SelectIncrease = {
bInitDoOnce = false;
IsAutoSelect = false;
CanObtainIncreaseCount = 0;
};
function WB_SelectIncrease:Construct()
UGCLogSystem.Log("[WB_SelectIncrease_Construct]")
-- 校验选择的Item数量
self:CheckSelectItemCount()
WidgetLibrary.BindButtonClicked(self.NewButton_AutoSelect, self.ChangeAutoSelect, self)
UGCEventSystem.AddListener(EventEnum.UpdateCanObtainIncreaseCount, self.UpdateCanObtainIncreaseCount, self)
UGCEventSystem.AddListener(EventEnum.UpdateNowCanSelectIncrease, self.UpdateSelectBuffBox, self)
UGCEventSystem.SetTimerLoop(self, self.CheckUpdateIncrease, 1)
end
function WB_SelectIncrease:UpdateCanObtainIncreaseCount(PC, Count)
UGCLogSystem.Log("[WB_SelectIncrease_UpdateCanObtainIncreaseCount]Count:%s", tostring(Count))
if Count > 0 then
--WidgetManager:ShowPanel(WidgetConfig.EUIType.SelectBuff, false)
self.CanvasPanel_SelectMenu:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
self:AutoSelect()
else
--WidgetManager:ClosePanel(WidgetConfig.EUIType.SelectBuff)
self.CanvasPanel_SelectMenu:SetVisibility(ESlateVisibility.Collapsed)
end
if Count > 1 then
self.TextBlock_AddCount:SetVisibility(ESlateVisibility.HitTestInvisible)
self.TextBlock_AddCount:SetText("×" .. Count)
else
self.TextBlock_AddCount:SetVisibility(ESlateVisibility.Collapsed)
end
self.CanObtainIncreaseCount = Count
end
function WB_SelectIncrease:ChangeAutoSelect()
self.IsAutoSelect = not self.IsAutoSelect
if self.IsAutoSelect then
self.WidgetSwitcher_AutoSelect:SetActiveWidgetIndex(1)
self.WidgetSwitcher_ChangeAutoSelect:SetActiveWidgetIndex(1)
if self.CanObtainIncreaseCount > 0 then
self:AutoSelect()
end
else
self.WidgetSwitcher_AutoSelect:SetActiveWidgetIndex(0)
self.WidgetSwitcher_ChangeAutoSelect:SetActiveWidgetIndex(0)
if self.AutoSelectHandle then
UGCEventSystem.StopTimer(self.AutoSelectHandle)
self.AutoSelectHandle = nil
end
end
end
function WB_SelectIncrease:AutoSelect()
if self.IsAutoSelect then
if self.AutoSelectHandle == nil then
self.AutoSelectHandle = UGCEventSystem.SetTimer(self, function()
if self.CanObtainIncreaseCount > 0 then
self:SelectIncrease(1)
end
self.AutoSelectHandle = nil
end, 1)
end
end
end
--- 校验子项数量是否正确
function WB_SelectIncrease:CheckSelectItemCount()
for i = 1, math.max(self.HorizontalBox_Buffs:GetChildrenCount(), GodOfWarConfig.CanSelectIncreaseCount) do
local Item = self.HorizontalBox_Buffs:GetChildAt(i - 1)
if Item == nil then
UGCLogSystem.Log("[WB_SelectIncrease_CheckSelectItemCount] Add")
Item = UserWidget.NewWidgetObjectBP(UGCSystemLibrary.GetLocalPlayerController(), self:GetChildClass())
self.HorizontalBox_Buffs:AddChild(Item)
end
if i > GodOfWarConfig.CanSelectIncreaseCount then
Item:SetVisibility(ESlateVisibility.Collapsed)
else
Item:SetIndex(i)
Item:BindClickSelect(self.SelectIncrease, self)
end
end
end
function WB_SelectIncrease:GetChildClass()
if self.ChildClass == nil then
self.ChildClass = UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/SelectBuff/WB_BuffSelectItem.WB_BuffSelectItem_C'))
end
return self.ChildClass
end
--- 校验增益选择
function WB_SelectIncrease:CheckUpdateIncrease()
local PC = UGCSystemLibrary.GetLocalPlayerController()
self:UpdateCanObtainIncreaseCount(PC, PC:GetCanObtainIncreaseCount())
self:UpdateSelectBuffBox(PC, PC:GetNowCanSelectIncrease())
end
function WB_SelectIncrease:UpdateSelectBuffBox(PC, InNowCanSelectIncrease)
for i, v in pairs(InNowCanSelectIncrease) do
local Item = self.HorizontalBox_Buffs:GetChildAt(i - 1)
if Item then
Item:UpdateIncreaseType(v)
end
end
end
function WB_SelectIncrease:SelectIncrease(SelectIndex)
UGCLogSystem.Log("[WB_SelectIncrease_SelectIncrease]SelectIndex:%s", tostring(SelectIndex))
if SelectIndex then
UGCSendRPCSystem.ActorRPCNotify(nil, UGCSystemLibrary.GetLocalPlayerController(), "PlayerSelectIncrease", SelectIndex)
UGCLogSystem.Log("[WB_SelectIncrease_SelectIncrease] Succeed")
end
end
-- function WB_SelectIncrease:Tick(MyGeometry, InDeltaTime)
-- end
-- function WB_SelectIncrease:Destruct()
-- end
return WB_SelectIncrease;