#545 supervisor type annotation updates

This commit is contained in:
Mikayla
2024-09-13 02:23:16 +00:00
parent 3003e57531
commit a1dbc15d16
14 changed files with 178 additions and 163 deletions

View File

@@ -81,13 +81,13 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
num_turbines = num_turbines,
types = { DT_KEYS = DT_KEYS, AISTATE = AISTATE },
-- rtus
rtu_list = {},
redstone = {},
boilers = {},
turbines = {},
tanks = {},
snas = {},
envd = {},
rtu_list = {}, ---@type unit_session[][]
redstone = {}, ---@type unit_session[]
boilers = {}, ---@type unit_session[]
turbines = {}, ---@type unit_session[]
tanks = {}, ---@type unit_session[]
snas = {}, ---@type unit_session[]
envd = {}, ---@type unit_session[]
-- redstone control
io_ctl = nil, ---@type rs_controller
valves = {}, ---@type unit_valves
@@ -100,7 +100,7 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
auto_was_alarmed = false,
ramp_target_br100 = 0,
-- state tracking
deltas = {},
deltas = {}, ---@type { last_t: number, last_v: number, dt: number }[]
last_heartbeat = 0,
last_radiation = 0,
damage_decreasing = false,
@@ -108,12 +108,12 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
damage_start = 0,
damage_last = 0,
damage_est_last = 0,
waste_product = WASTE.PLUTONIUM, ---@type WASTE_PRODUCT
waste_product = WASTE.PLUTONIUM, ---@type WASTE_PRODUCT
status_text = { "UNKNOWN", "awaiting connection..." },
-- logic for alarms
had_reactor = false,
turbine_flow_stable = false,
turbine_stability_data = {},
turbine_stability_data = {}, ---@type { time_state: integer, time_tanks: integer, rotation: number, input_rate: integer }[]
last_rate_change_ms = 0,
---@type rps_status
last_rps_trips = {
@@ -211,15 +211,15 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
SteamFeedMismatch = false,
MaxWaterReturnFeed = false,
-- boilers
BoilerOnline = {},
HeatingRateLow = {},
WaterLevelLow = {},
BoilerOnline = {}, ---@type boolean[]
HeatingRateLow = {}, ---@type boolean[]
WaterLevelLow = {}, ---@type boolean[]
-- turbines
TurbineOnline = {},
SteamDumpOpen = {},
TurbineOverSpeed = {},
GeneratorTrip = {},
TurbineTrip = {}
TurbineOnline = {}, ---@type boolean[]
SteamDumpOpen = {}, ---@type integer[]
TurbineOverSpeed = {}, ---@type boolean[]
GeneratorTrip = {}, ---@type boolean[]
TurbineTrip = {} ---@type boolean[]
},
---@class alarms
alarm_states = {
@@ -244,7 +244,7 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
blade_count = 0,
br100 = 0,
lim_br100 = 0,
waste_mode = WASTE_MODE.AUTO ---@type WASTE_MODE
waste_mode = WASTE_MODE.AUTO ---@type WASTE_MODE
}
}
}
@@ -324,8 +324,8 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
end
for i = 1, #self.boilers do
local boiler = self.boilers[i] ---@type unit_session
local db = boiler.get_db() ---@type boilerv_session_db
local boiler = self.boilers[i]
local db = boiler.get_db() ---@type boilerv_session_db
local last_update_s = db.tanks.last_update / 1000.0
@@ -336,8 +336,8 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
end
for i = 1, #self.turbines do
local turbine = self.turbines[i] ---@type unit_session
local db = turbine.get_db() ---@type turbinev_session_db
local turbine = self.turbines[i]
local db = turbine.get_db() ---@type turbinev_session_db
local last_update_s = db.tanks.last_update / 1000.0
@@ -553,8 +553,8 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
-- check boilers formed/faulted
for i = 1, #self.boilers do
local sess = self.boilers[i] ---@type unit_session
local boiler = sess.get_db() ---@type boilerv_session_db
local sess = self.boilers[i]
local boiler = sess.get_db() ---@type boilerv_session_db
if sess.is_faulted() or not boiler.formed then
self.db.control.degraded = true
end
@@ -562,8 +562,8 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
-- check turbines formed/faulted
for i = 1, #self.turbines do
local sess = self.turbines[i] ---@type unit_session
local turbine = sess.get_db() ---@type turbinev_session_db
local sess = self.turbines[i]
local turbine = sess.get_db() ---@type turbinev_session_db
if sess.is_faulted() or not turbine.formed then
self.db.control.degraded = true
end
@@ -881,7 +881,7 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
if all or (filter == RTU_UNIT_TYPE.BOILER_VALVE) then
build.boilers = {}
for i = 1, #self.boilers do
local boiler = self.boilers[i] ---@type unit_session
local boiler = self.boilers[i]
build.boilers[boiler.get_device_idx()] = { boiler.get_db().formed, boiler.get_db().build }
end
end
@@ -889,7 +889,7 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
if all or (filter == RTU_UNIT_TYPE.TURBINE_VALVE) then
build.turbines = {}
for i = 1, #self.turbines do
local turbine = self.turbines[i] ---@type unit_session
local turbine = self.turbines[i]
build.turbines[turbine.get_device_idx()] = { turbine.get_db().formed, turbine.get_db().build }
end
end
@@ -897,7 +897,7 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
if all or (filter == RTU_UNIT_TYPE.DYNAMIC_VALVE) then
build.tanks = {}
for i = 1, #self.tanks do
local tank = self.tanks[i] ---@type unit_session
local tank = self.tanks[i]
build.tanks[tank.get_device_idx()] = { tank.get_db().formed, tank.get_db().build }
end
end
@@ -927,19 +927,20 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
-- check which RTUs are connected
---@nodiscard
function public.check_rtu_conns()
---@class unit_connections
local conns = {}
conns.boilers = {}
conns.boilers = {} ---@type boolean[]
for i = 1, #self.boilers do
conns.boilers[self.boilers[i].get_device_idx()] = true
end
conns.turbines = {}
conns.turbines = {} ---@type boolean[]
for i = 1, #self.turbines do
conns.turbines[self.turbines[i].get_device_idx()] = true
end
conns.tanks = {}
conns.tanks = {} ---@type boolean[]
for i = 1, #self.tanks do
conns.tanks[self.tanks[i].get_device_idx()] = true
end
@@ -955,31 +956,31 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
-- status of boilers (including tanks)
status.boilers = {}
for i = 1, #self.boilers do
local boiler = self.boilers[i] ---@type unit_session
local db = boiler.get_db() ---@type boilerv_session_db
local boiler = self.boilers[i]
local db = boiler.get_db() ---@type boilerv_session_db
status.boilers[boiler.get_device_idx()] = { boiler.is_faulted(), db.formed, db.state, db.tanks }
end
-- status of turbines (including tanks)
status.turbines = {}
for i = 1, #self.turbines do
local turbine = self.turbines[i] ---@type unit_session
local db = turbine.get_db() ---@type turbinev_session_db
local turbine = self.turbines[i]
local db = turbine.get_db() ---@type turbinev_session_db
status.turbines[turbine.get_device_idx()] = { turbine.is_faulted(), db.formed, db.state, db.tanks }
end
-- status of dynamic tanks
status.tanks = {}
for i = 1, #self.tanks do
local tank = self.tanks[i] ---@type unit_session
local db = tank.get_db() ---@type dynamicv_session_db
local tank = self.tanks[i]
local db = tank.get_db() ---@type dynamicv_session_db
status.tanks[tank.get_device_idx()] = { tank.is_faulted(), db.formed, db.state, db.tanks }
end
-- SNA statistical information
local total_peak, total_avail, total_out = 0, 0, 0
for i = 1, #self.snas do
local db = self.snas[i].get_db() ---@type sna_session_db
local db = self.snas[i].get_db() ---@type sna_session_db
total_peak = total_peak + db.state.peak_production
total_avail = total_avail + db.state.production_rate
total_out = total_out + math.min(db.tanks.input.amount / 10, db.state.production_rate)
@@ -989,8 +990,8 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
-- radiation monitors (environment detectors)
status.envds = {}
for i = 1, #self.envd do
local envd = self.envd[i] ---@type unit_session
local db = envd.get_db() ---@type envd_session_db
local envd = self.envd[i]
local db = envd.get_db() ---@type envd_session_db
status.envds[envd.get_device_idx()] = { envd.is_faulted(), db.radiation, db.radiation_raw }
end
@@ -1004,7 +1005,7 @@ function unit.new(reactor_id, num_boilers, num_turbines, ext_idle)
local total_avail_rate = 0
for i = 1, #self.snas do
local db = self.snas[i].get_db() ---@type sna_session_db
local db = self.snas[i].get_db() ---@type sna_session_db
total_avail_rate = total_avail_rate + db.state.production_rate
end