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

158 lines
5.0 KiB
Lua

---@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;