2025-01-18 21:26:02 +08:00

138 lines
5.1 KiB
Lua

---@class WB_ShowBuff_C:UUserWidget
---@field NewButton_Show UNewButton
---@field UniformGridPanel_Buff UUniformGridPanel
---@field VerticalBox_OtherBuff UVerticalBox
---@field WidgetSwitcher_DetailedInformation UWidgetSwitcher
---@field WidgetSwitcher_DetailedInformationText UWidgetSwitcher
--Edit Below--
local WB_ShowBuff = {
SmallItemRaw = 4;
bInitDoOnce = false;
bIsExpand = false;
};
function WB_ShowBuff:Construct()
WidgetLibrary.BindButtonClicked(self.NewButton_Show, self.Expand, self)
UGCEventSystem.AddListener(EventEnum.UpdateOwnedIncrease, self.UpdateShowBuff, self)
UGCEventSystem.AddListener(EventEnum.UpdateToGodSchedule, self.UpdateShowBuff, self)
self:InitBuffList()
-- 校验
self:UpdateShowBuff()
UGCEventSystem.SetTimerLoop(self,
function()
self:UpdateShowBuff()
end,
3
)
end
function WB_ShowBuff:GetShowBuffItemClass()
if self.ShowBuffItemClass == nil then
self.ShowBuffItemClass = UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/StatusUI/FightPanel/ShowBuff/WB_ShowBuffItem.WB_ShowBuffItem_C'))
end
return self.ShowBuffItemClass
end
function WB_ShowBuff:GetShowBuffSmallItemClass()
if self.ShowBuffSmallItemClass == nil then
self.ShowBuffSmallItemClass = UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/StatusUI/FightPanel/ShowBuff/WB_ShowBuffSmallItem.WB_ShowBuffSmallItem_C'))
end
return self.ShowBuffSmallItemClass
end
function WB_ShowBuff:InitBuffList()
local LocalPC = UGCSystemLibrary.GetLocalPlayerController()
local Count = table.getCount(GodOfWarConfig.EIncreaseType)
for i = 0, Count do
local ShowBuffItem = UserWidget.NewWidgetObjectBP(LocalPC, self:GetShowBuffItemClass());
if ShowBuffItem then
self.VerticalBox_OtherBuff:AddChild(ShowBuffItem)
ShowBuffItem:UpdateInfo((i == 0), i, 1, false)
end
local ShowBuffSmallItem = UserWidget.NewWidgetObjectBP(LocalPC, self:GetShowBuffSmallItemClass());
if ShowBuffSmallItem then
self.UniformGridPanel_Buff:AddChild(ShowBuffSmallItem)
ShowBuffSmallItem:UpdateInfo((i == 0), i, 1, false)
local TargetUniformGridSlot = WidgetLayoutLibrary.SlotAsUniformGridSlot(ShowBuffSmallItem)
-- 居中
TargetUniformGridSlot:SetVerticalAlignment(EVerticalAlignment.VAlign_Center)
TargetUniformGridSlot:SetHorizontalAlignment(EHorizontalAlignment.HAlign_Center)
-- 设置索引
TargetUniformGridSlot:SetColumn(i % self.SmallItemRaw)
TargetUniformGridSlot:SetRow(i // self.SmallItemRaw)
end
end
end
function WB_ShowBuff:Expand()
self.bIsExpand = not self.bIsExpand
if self.bIsExpand then
self.WidgetSwitcher_DetailedInformation:SetActiveWidgetIndex(0)
self.WidgetSwitcher_DetailedInformationText:SetActiveWidgetIndex(1)
else
self.WidgetSwitcher_DetailedInformation:SetActiveWidgetIndex(1)
self.WidgetSwitcher_DetailedInformationText:SetActiveWidgetIndex(0)
end
end
function WB_ShowBuff:UpdateShowBuff()
local LocalPC = UGCSystemLibrary.GetLocalPlayerController()
local OwnedIncrease = LocalPC:GetAllOwnedIncreaseLevel()
for i = 0, self.VerticalBox_OtherBuff:GetChildrenCount() - 1 do
local Item = self.VerticalBox_OtherBuff:GetChildAt(i)
if i == 0 then
Item:SetVisibility(ESlateVisibility.Collapsed)
else
local IncreaseType = Item:GetIncreaseType()
local Level = OwnedIncrease[IncreaseType]
if Level then
Item:SetVisibility(ESlateVisibility.HitTestInvisible)
Item:UpdateLevel(Level, Level >= #GodOfWarConfig.BuffList[IncreaseType])
else
Item:SetVisibility(ESlateVisibility.Collapsed)
end
end
end
local ShowIndex = 0;
for i = 0, self.UniformGridPanel_Buff:GetChildrenCount() - 1 do
local SmallItem = self.UniformGridPanel_Buff:GetChildAt(i)
if i == 0 then
SmallItem:SetVisibility(ESlateVisibility.Collapsed)
else
local IncreaseType = SmallItem:GetIncreaseType()
local Level = OwnedIncrease[IncreaseType]
--UGCLogSystem.Log("[WB_ShowBuff_UpdateShowBuff] IncreaseType2:%s", tostring(IncreaseType))
if Level then
SmallItem:SetVisibility(ESlateVisibility.HitTestInvisible)
SmallItem:UpdateLevel(Level, Level >= #GodOfWarConfig.BuffList[IncreaseType])
local TargetUniformGridSlot = WidgetLayoutLibrary.SlotAsUniformGridSlot(SmallItem)
-- 设置索引
TargetUniformGridSlot:SetColumn(ShowIndex % self.SmallItemRaw)
TargetUniformGridSlot:SetRow(ShowIndex // self.SmallItemRaw)
ShowIndex = ShowIndex + 1
else
SmallItem:SetVisibility(ESlateVisibility.Collapsed)
end
end
end
end
-- function WB_ShowBuff:Tick(MyGeometry, InDeltaTime)
-- end
-- function WB_ShowBuff:Destruct()
-- end
return WB_ShowBuff;