72 lines
2.6 KiB
Plaintext
72 lines
2.6 KiB
Plaintext
|
base_init = ui_sleep_dialog.UISleep.InitControls
|
||
|
function ui_sleep_dialog.UISleep:InitControls()
|
||
|
base_init(self)
|
||
|
|
||
|
if not actor_status_sleep.in_hour then
|
||
|
printf("-User missing Unlocalizer! Install or update your Modded Exes")
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local xml = CScriptXmlInit()
|
||
|
xml:ParseFile("ui_sleep_gain_indicator.xml")
|
||
|
|
||
|
self.form = xml:InitStatic("form", self.back)
|
||
|
self.bg = xml:InitStatic("form:bg", self.form)
|
||
|
self.sensor = xml:InitProgressBar("form:bar", self.form)
|
||
|
self.sensor_gain = xml:InitProgressBar("form:bar", self.form)
|
||
|
end
|
||
|
|
||
|
base_Initialize = ui_sleep_dialog.UISleep.Initialize
|
||
|
function ui_sleep_dialog.UISleep:Initialize()
|
||
|
base_Initialize(self)
|
||
|
|
||
|
if not self.form then return end
|
||
|
|
||
|
self.sensor_gain:Show(false)
|
||
|
local sensor_w = self.sensor:GetWidth()
|
||
|
local sensor_h = self.sensor:GetHeight()
|
||
|
local back_w = self.back:GetWidth()
|
||
|
--local back_h = self.back:GetHeight()
|
||
|
local sensor_y = self.btn_sleep:GetWndPos().y - 2 - sensor_h
|
||
|
|
||
|
self.form:SetWndPos(vector2():set( (back_w / 2) - (self.form:GetWidth() / 2), sensor_y))
|
||
|
|
||
|
local sleep = self:Get_Sleep()
|
||
|
self.sensor:SetProgressPos( sleep )
|
||
|
|
||
|
if sleep >= 0.995 then return end
|
||
|
|
||
|
local sensor_pos = self.sensor:GetWndPos()
|
||
|
self.sensor_gain:SetWndPos(vector2():set( sensor_pos.x + (sensor_w * sleep), sensor_pos.y))
|
||
|
|
||
|
self.sensor_gain:SetProgressPos( clamp( self:Get_Sleep_Gain(), 0, 1 - sleep ) )
|
||
|
self.sensor_gain:SetColor( GetARGB(255, 50, 200, 50) )
|
||
|
self.sensor_gain:Show(true)
|
||
|
end
|
||
|
|
||
|
base_Update = ui_sleep_dialog.UISleep.Update
|
||
|
function ui_sleep_dialog.UISleep:Update()
|
||
|
base_Update(self)
|
||
|
if self:IsShown() and self.sensor_gain and self.sensor_gain:IsShown() then
|
||
|
self.sensor_gain:SetProgressPos( clamp( self:Get_Sleep_Gain() , 0, 1 - self.sensor:GetProgressPos() ) )
|
||
|
end
|
||
|
end
|
||
|
|
||
|
function ui_sleep_dialog.UISleep:Get_Sleep()
|
||
|
local sleep = actor_status_sleep.last_sleep or 0
|
||
|
local sleep_red_icon = actor_status_sleep.start_blur_4
|
||
|
sleep = (sleep_red_icon - sleep) / sleep_red_icon
|
||
|
return clamp( sleep, 0, 1)
|
||
|
end
|
||
|
|
||
|
function ui_sleep_dialog.UISleep:Get_Sleep_Gain()
|
||
|
local sleep_per_hour = actor_status_sleep.in_hour / 2 -- Remove the "/ 2" if you use Gamma. Or tell Grok to undo the removal of that divison in his actor_status_sleep.actor_on_sleep
|
||
|
if actor_status_sleep.comfy then -- Possible fix for Gamma incompatibility
|
||
|
sleep_per_hour = actor_status_sleep.in_hour
|
||
|
end
|
||
|
|
||
|
local hours = self.time_track:GetIValue()
|
||
|
local sleep_red_icon = actor_status_sleep.start_blur_4
|
||
|
local sleep_gain = (sleep_per_hour * hours) / sleep_red_icon
|
||
|
return sleep_gain
|
||
|
end
|