149 lines
5.5 KiB
Lua
149 lines
5.5 KiB
Lua
---@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(InPawn, Count)
|
||
UGCLogSystem.Log("[WB_SelectIncrease_UpdateCanObtainIncreaseCount]Count:%s", tostring(Count))
|
||
local LocalPawn = UGCGameSystem.GameState:GetAlivePawn(UGCSystemLibrary.GetLocalPlayerKey())
|
||
if LocalPawn and LocalPawn == InPawn then
|
||
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
|
||
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 LocalPawn = UGCGameSystem.GameState:GetAlivePawn(UGCSystemLibrary.GetLocalPlayerKey())
|
||
if LocalPawn then
|
||
self:UpdateCanObtainIncreaseCount(LocalPawn, LocalPawn:GetCanObtainIncreaseCount())
|
||
self:UpdateSelectBuffBox(LocalPawn, LocalPawn:GetNowCanSelectIncrease())
|
||
end
|
||
end
|
||
|
||
function WB_SelectIncrease:UpdateSelectBuffBox(InPawn, InNowCanSelectIncrease)
|
||
local LocalPawn = UGCGameSystem.GameState:GetAlivePawn(UGCSystemLibrary.GetLocalPlayerKey())
|
||
if LocalPawn and LocalPawn == InPawn then
|
||
for i, v in pairs(InNowCanSelectIncrease) do
|
||
local Item = self.HorizontalBox_Buffs:GetChildAt(i - 1)
|
||
if Item then
|
||
Item:UpdateIncreaseType(v)
|
||
end
|
||
end
|
||
end
|
||
end
|
||
|
||
function WB_SelectIncrease:SelectIncrease(SelectIndex)
|
||
UGCLogSystem.Log("[WB_SelectIncrease_SelectIncrease]SelectIndex:%s", tostring(SelectIndex))
|
||
if SelectIndex then
|
||
local LocalPawn = UGCGameSystem.GameState:GetAlivePawn(UGCSystemLibrary.GetLocalPlayerKey())
|
||
if LocalPawn then
|
||
UGCSendRPCSystem.ActorRPCNotify(nil, LocalPawn, "PlayerSelectIncrease", SelectIndex)
|
||
UGCLogSystem.Log("[WB_SelectIncrease_SelectIncrease] Succeed")
|
||
end
|
||
end
|
||
end
|
||
|
||
-- function WB_SelectIncrease:Tick(MyGeometry, InDeltaTime)
|
||
|
||
-- end
|
||
|
||
-- function WB_SelectIncrease:Destruct()
|
||
|
||
-- end
|
||
|
||
|
||
|
||
|
||
|
||
return WB_SelectIncrease; |