---@class WBP_InheritPanel_C:UUserWidget ---@field Button_Operate UButton ---@field CanvasPanel_Select UCanvasPanel ---@field HorizontalBox_Money UHorizontalBox ---@field InheritItem_New UWBP_InheritItem_C ---@field InheritItem_Old UWBP_InheritItem_C ---@field TextBlock_ UTextBlock ---@field TextBlock_Benefit UTextBlock ---@field TextBlock_Inherit UTextBlock ---@field TextBlock_Money UTextBlock ---@field WBP_InheritSelectItem UWBP_InheritSelectItem_C ---@field WBP_InheritSelectItem_0 UWBP_InheritSelectItem_C ---@field WBP_WidgetHeader UWBP_WidgetHeader_C ---@field WidgetSwitcher_Main UWidgetSwitcher ---@field WidgetSwitcher_Text UWidgetSwitcher --Edit Below-- local WBP_InheritPanel = { bInitDoOnce = false; IsBreak = false; -- 是否是突破 SelectItem = ''; CanOperate = true; }; function WBP_InheritPanel:Construct() self.WBP_WidgetHeader:Construct() self.Button_Operate.OnClicked:Add(WBP_InheritPanel.ClickOperate, self) end -- 在显示的时候执行的 function WBP_InheritPanel:OnShowPanel() -- 从 PS 获取 local PS = GameDataManager.GetLocalPlayerState() local KuiNum = PS.InheritItems['盔'] local JiaNum = PS.InheritItems['甲'] self.CanvasPanel_Select:GetChildAt(0):SetFirstData(KuiNum) self.CanvasPanel_Select:GetChildAt(1):SetFirstData(JiaNum) self.WidgetSwitcher_Main:SetActiveWidgetIndex(0) NewPlayerGuideManager:RemoveGuide(9) end function WBP_InheritPanel:Destruct() self.Button_Operate.OnClicked:Remove(WBP_InheritPanel.ClickOperate, self) end -- function WBP_InheritPanel:Tick(MyGeometry, InDeltaTime) -- end -- 设置老的 Id function WBP_InheritPanel:SetInheritId(InInheritId) -- 找到对应Id local NextId = InheritTable.GetNextId(InInheritId) self.InheritItem_Old:SetItemInheritId(InInheritId) self.InheritItem_New:SetItemInheritId(NextId) -- 判断是否是 突破 local Cost = InheritTable.Items[InInheritId].Cost if Cost == '突破' then self.IsBreak = true self.WidgetSwitcher_Text:SetActiveWidgetIndex(1) self.TextBlock_Benefit:SetVisibility(ESlateVisibility.Collapsed) else self.IsBreak = false self.TextBlock_Money:SetText(string.format('%d', Cost)) self.WidgetSwitcher_Text:SetActiveWidgetIndex(0) self.HorizontalBox_Money:SetVisibility(ESlateVisibility.SelfHitTestInvisible) local Benefit = InheritTable.Items[NextId].Benefit local FinalText = '' for i = 1, #Benefit do local Text = DropItemMap.ToText(Benefit[i]) FinalText = FinalText .. Text .. '\n' end self.TextBlock_Benefit:SetText(FinalText) self.TextBlock_Benefit:SetVisibility(ESlateVisibility.SelfHitTestInvisible) end end function WBP_InheritPanel:SetSelectItem(InSelectText) self.SelectItem = InSelectText local PS = GameDataManager.GetLocalPlayerState() local CurrId = PS.InheritItems[self.SelectItem] self:SetInheritId(CurrId) self.WidgetSwitcher_Main:SetActiveWidgetIndex(1) end function WBP_InheritPanel:ClickOperate() print(string.format('[WBP_InheritPanel:ClickOperate] 点击 Operate 按钮')) if not self.CanOperate then print(string.format('[WBP_InheritPanel:ClickOperate] 莫名其妙中断了')) return end --print(string.format('[WBP_InheritPanel:ClickOperate] 可以点击')) self.CanOperate = false local PS = GameDataManager.GetLocalPlayerState() local CurrId = PS.InheritItems[self.SelectItem] --local NextId = InheritTable.GetNextId(CurrId) if not self.IsBreak then -- 判断金币够不够 local Info = InheritTable.Items[CurrId] if Info ~= nil and Info.Cost > PS.CoinPoint.Current then self:SetInheritId(CurrId) UIManager:ShowGeneralNotice(string.format('您当前的金币不足')) self.CanOperate = true return end end print(string.format('[WBP_InheritPanel:ClickOperate] 确保已经发送出去了')) local PC = GameDataManager.GetLocalPlayerController() UnrealNetwork.CallUnrealRPC(PC, PC, "ServerRPC_Inherit", self.IsBreak, self.SelectItem, CurrId) end function WBP_InheritPanel:CloseInheritWidget() UIManager:ClosePanel(EUIType.Inherit) end function WBP_InheritPanel:UpdateInherit(IsSuccess) print(string.format('[WBP_InheritPanel:UpdateInherit] 更新一下')) self.CanOperate = true -- 击杀成功 if IsSuccess == 0 then local PS = GameDataManager.GetLocalPlayerState() local CurrId = PS.InheritItems[self.SelectItem] local NextId = InheritTable.GetNextId(CurrId) self.IsBreak = false self:SetInheritId(NextId) elseif IsSuccess == 1 then -- 扣除金币成功 local PS = GameDataManager.GetLocalPlayerState() local CurrId = PS.InheritItems[self.SelectItem] local NextId = InheritTable.GetNextId(CurrId) self.IsBreak = false self:SetInheritId(NextId) elseif IsSuccess == 2 then self.IsBreak = true elseif IsSuccess == 3 then self.IsBreak = false elseif IsSuccess == 4 then end --if IsSuccess then -- local PS = GameDataManager.GetLocalPlayerState() -- local CurrId = PS.InheritItems[self.SelectItem] -- local NextId = InheritTable.GetNextId(CurrId) -- self.IsBreak = false -- self:SetInheritId(NextId) --else -- self.IsBreak = true --end end return WBP_InheritPanel;