stationeers_ic10/heating_cooling.ic10
2023-03-30 16:40:34 +02:00

92 lines
1.7 KiB
Plaintext

alias GasSensor d0
# d1= Logic Switch, Dial variant (Max=30)
alias Thermostat d1
# d2 = Console, LED Display variant, optional
alias TempDisplay d2
# d3 = Wall Cooler
alias WallCooler d3
# d4 = Wall Heater
alias WallHeater d4
alias CurrentTemp r0
alias TargetTemp r1
alias MinTemp r2
alias MaxTemp r3
alias CoolingActive r4
alias HeatingActive r5
alias Cooler r6
alias Heater r7
define TEMPCONVERT 273.15
define VARIANCE 2
move CoolingActive 0
move HeatingActive 0
l Cooler WallCooler PrefabHash
l Heater WallHeater PrefabHash
start:
yield
# establish min- and max-temps to registry
l TargetTemp Thermostat Setting
sub MinTemp TargetTemp VARIANCE
add MaxTemp TargetTemp VARIANCE
# get current temperature
jal temp_read
# update display
bdseal TempDisplay display
# compare current temp to max/min temp and
# initiate cooling or heating if needed
bgt CurrentTemp MaxTemp cooling
blt CurrentTemp MinTemp heating
# Ensure coolers and heaters are off when not needed
sb Cooler On CoolingActive
sb Heater On HeatingActive
j start
temp_read:
l CurrentTemp GasSensor Temperature
sub CurrentTemp CurrentTemp TEMPCONVERT
j ra
display:
s TempDisplay Setting CurrentTemp
j ra
cooling:
yield
jal temp_read
# test if coolers need to be on or not
sgt CoolingActive CurrentTemp TargetTemp
# update display
bdseal TempDisplay display
# send state to coolers
sb Cooler On CoolingActive
bgtz CoolingActive cooling
j start
heating:
yield
jal temp_read
# test if heaters need to be on or not
slt HeatingActive CurrentTemp TargetTemp
# update display
bdseal TempDisplay display
# send state to heaters
sb Heater On HeatingActive
bgtz HeatingActive heating
j start