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

75 lines
2.2 KiB
Lua

---@class WBP_OperateButton_C:UUserWidget
---@field Button_Title UButton
---@field TextBlock_Title UTextBlock
---@field WidgetSwitcher_BG UWidgetSwitcher
---@field ButtonText FText
---@field OperateType TEnumAsByte<EBagOperateType>
--Edit Below--
local WBP_OperateButton = {
bInitDoOnce = false,
FittingType = nil,
bClickButton = false,
ValText = nil,
};
function WBP_OperateButton:Construct()
self.Button_Title.OnClicked:Add(WBP_OperateButton.OnClickTitle, self)
self.WidgetSwitcher_BG:SetActiveWidgetIndex(1)
self:SetDefaultText()
end
function WBP_OperateButton:Destruct()
self.Button_Title.OnClicked:Remove(WBP_OperateButton.OnClickTitle, self)
end
function WBP_OperateButton:OnClickTitle()
-- 设置数据进去
-- 设置对应数据进去
self:ClickTitle(self.bClickButton)
UIManager:ClosePanel(EUIType.UseSkill)
end
function WBP_OperateButton:ClickTitle(bClicked)
-- 需要根据具体类型进行判断
if bClicked then self:OtherOperate() else self:StartOperate() end
end
function WBP_OperateButton:StartOperate()
-- 是执行对应操作,比如合成就是要选择三个
-- 说明此时是显示
if self.OperateType == EBagOperateType.Reset then
-- 检查一下背包中的数量
local PC = STExtraGameplayStatics.GetFirstPlayerController(self)
local Stones = PC:GetItemMapByItemType(EItemType.SubstituteStone)
local ItemCount = 0
if Stones ~= nil then
for _, v in pairs(Stones) do
ItemCount = ItemCount + v
end
end
if ItemCount <= 0 then
UIManager:ShowGeneralNotice("置换石的数量不足,请检查一下", true)
return
end
end
EventSystem:SendEvent(EventType.BagOperation, self.OperateType)
print(string.format('当前点击的按钮的类型是:%d', self.OperateType))
self.TextBlock_Title:SetText("取消")
self.WidgetSwitcher_BG:SetActiveWidgetIndex(0)
self.bClickButton = true
end
function WBP_OperateButton:OtherOperate()
EventSystem:SendEvent(EventType.CancelBagOperation, self.OperateType)
-- 说明此时就是取消
self:SetDefaultText()
end
function WBP_OperateButton:SetDefaultText()
self.bClickButton = false
self.TextBlock_Title:SetText(self.ButtonText)
self.WidgetSwitcher_BG:SetActiveWidgetIndex(1)
end
return WBP_OperateButton;