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)