Files
BusyRabbit/Content/Lua/HomeLand/UI/Hearth/Widgets/CookingBench.lua
2025-08-01 00:33:26 +08:00

79 lines
2.2 KiB
Lua

local CookingBench = {}
local KismetSystemLibrary = import("KismetSystemLibrary")
local ESlateVisibility = import("ESlateVisibility")
function CookingBench:ctor()
self.is_cooking = false
self.temperature = 0
self.max_temperature = 200
self.burn_timer = nil
end
function CookingBench:OnInitialized()
self.WBP_Rabbit.OnClicked:Add(function() self:OnRabbitClicked()end)
end
function CookingBench:Construct()
self:UpdateCookState()
self:UpdateFireState()
end
function CookingBench:Destruct()
self.is_cooking = false
self:UpdateFireState()
end
function CookingBench:OnRabbitClicked()
if self.is_cooking then
local new_value = self.temperature + 8
if new_value > self.max_temperature then
self.temperature = self.max_temperature
else
self.temperature = new_value
end
else
self.is_cooking = true
self.temperature = 100
self.burn_timer = KismetSystemLibrary.K2_SetTimerDelegate(
slua.createDelegate(function()
local new_value = self.temperature - 1
if new_value > 0 then
self.temperature = new_value
else
self.temperature = 0
self.is_cooking = false
KismetSystemLibrary.K2_ClearTimerHandle(self, self.burn_timer)
self.burn_timer = nil
end
self:UpdateCookState()
self:UpdateFireState()
end),
0.1, true, true, 0, 0
)
end
self:UpdateCookState()
self:UpdateFireState()
end
function CookingBench:UpdateCookState()
if self.temperature > 0 then
self.WBP_CookingProcess:SetVisible(true)
local percent = self.temperature / self.max_temperature
self.WBP_CookingProcess.TemperatureProcess:SetPercent(percent)
else
self.WBP_CookingProcess:SetVisible(false)
end
end
function CookingBench:UpdateFireState()
if self.is_cooking == true then
self.CookingFireImg:SetVisibility(ESlateVisibility.SelfHitTestInvisible)
else
self.CookingFireImg:SetVisibility(ESlateVisibility.Collapsed)
end
end
return Class(nil, nil, CookingBench)