UGCProjects/GZJ/Script/UI/Guide/WBP_GuidePanel.lua
2025-01-08 22:46:12 +08:00

68 lines
2.0 KiB
Lua

---@class WBP_GuidePanel_C:UUserWidget
---@field Overlay_GuideRoot UOverlay
--Edit Below--
local WBP_GuidePanel = {
TriggeredGuide = {}
};
function WBP_GuidePanel:Construct()
WBP_GuidePanel.SuperClass.Construct(self)
self.TipsPanel = {}
self.TipWidgetClasses = {
[EGuideWidgetType.Square] = UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Guide/WBP_GuideTips_1.WBP_GuideTips_1_C')),
[EGuideWidgetType.Round] = UE.LoadClass(UGCGameSystem.GetUGCResourcesFullPath('Asset/UI/Guide/WBP_GuideTips_2.WBP_GuideTips_2_C')),
}
end
function WBP_GuidePanel:Destruct()
WBP_GuidePanel.SuperClass.Destruct(self)
end
function WBP_GuidePanel:RemoveAllGuide()
for ID, GuideTip in pairs(self.TriggeredGuide) do
if GuideTip and UE.IsValid(GuideTip) then
GuideTip:RemoveFromParent()
self.TriggeredGuide[ID] = nil
end
end
end
function WBP_GuidePanel:InitFromParam(GuideData)
self:SetupGuideWidget(GuideData)
end
function WBP_GuidePanel:SetupGuideWidget(InGuideData)
local GuideID = InGuideData.ID
if GuideID == nil or self.TriggeredGuide[GuideID] ~= nil then
return
end
local TipClass = self.TipWidgetClasses[InGuideData.GuideType]
if TipClass == nil or UE.IsValid(TipClass) == false then
return
end
local WidgetData = {
UIConfig = {UIType = InGuideData.LinkedUIType, Component = InGuideData.LinkedComponent},
TextConfig = {TextType = InGuideData.GuideTextType, Text = InGuideData.GuideText}
}
local TipWidget = UserWidget.NewWidgetObjectBP(self, TipClass)
self.Overlay_GuideRoot:AddChild(TipWidget)
TipWidget:SetGuideActionInfo(WidgetData)
self.TriggeredGuide[GuideID] = TipWidget
end
function WBP_GuidePanel:RemoveGuideWidget(InID)
local TipWidget = self.TriggeredGuide[InID]
if TipWidget == nil or UE.IsValid(TipWidget) == false then
return
end
TipWidget:RemoveFromParent()
self.TriggeredGuide[InID] = nil
end
return WBP_GuidePanel;