mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-10 10:12:45 +00:00
* Yes, all of them. * Also did a few corrections to redundant New() and broken Destroy() along the way * Renamed the turf_initializer.initialize() proc to InitializeTurf to avoid confusion. * Subsumed /area/proc/initialize into /atom/proc/initialize() - Made /area's LateInitialize to get same behavior as before.
189 lines
4.9 KiB
Plaintext
189 lines
4.9 KiB
Plaintext
//base type for controllers of two-door systems
|
|
/obj/machinery/embedded_controller/radio/airlock
|
|
// Setup parameters only
|
|
radio_filter = RADIO_AIRLOCK
|
|
var/tag_exterior_door
|
|
var/tag_interior_door
|
|
var/tag_airpump
|
|
var/tag_chamber_sensor
|
|
var/tag_exterior_sensor
|
|
var/tag_interior_sensor
|
|
var/tag_airlock_mech_sensor
|
|
var/tag_shuttle_mech_sensor
|
|
var/tag_secure = 0
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/initialize()
|
|
. = ..()
|
|
program = new/datum/computer/file/embedded_program/airlock(src)
|
|
|
|
//Advanced airlock controller for when you want a more versatile airlock controller - useful for turning simple access control rooms into airlocks
|
|
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller
|
|
name = "Advanced Airlock Controller"
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
|
var/data[0]
|
|
|
|
data = list(
|
|
"chamber_pressure" = round(program.memory["chamber_sensor_pressure"]),
|
|
"external_pressure" = round(program.memory["external_sensor_pressure"]),
|
|
"internal_pressure" = round(program.memory["internal_sensor_pressure"]),
|
|
"processing" = program.memory["processing"],
|
|
"purge" = program.memory["purge"],
|
|
"secure" = program.memory["secure"]
|
|
)
|
|
|
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
|
|
|
if (!ui)
|
|
ui = new(user, src, ui_key, "advanced_airlock_console.tmpl", name, 470, 290)
|
|
|
|
ui.set_initial_data(data)
|
|
|
|
ui.open()
|
|
|
|
ui.set_auto_update(1)
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller/Topic(href, href_list)
|
|
if(..())
|
|
return
|
|
|
|
usr.set_machine(src)
|
|
src.add_fingerprint(usr)
|
|
|
|
var/clean = 0
|
|
switch(href_list["command"]) //anti-HTML-hacking checks
|
|
if("cycle_ext")
|
|
clean = 1
|
|
if("cycle_int")
|
|
clean = 1
|
|
if("force_ext")
|
|
clean = 1
|
|
if("force_int")
|
|
clean = 1
|
|
if("abort")
|
|
clean = 1
|
|
if("purge")
|
|
clean = 1
|
|
if("secure")
|
|
clean = 1
|
|
|
|
if(clean)
|
|
program.receive_user_command(href_list["command"])
|
|
|
|
return 1
|
|
|
|
|
|
//Airlock controller for airlock control - most airlocks on the station use this
|
|
/obj/machinery/embedded_controller/radio/airlock/airlock_controller
|
|
name = "Airlock Controller"
|
|
tag_secure = 1
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
|
var/data[0]
|
|
|
|
data = list(
|
|
"chamber_pressure" = round(program.memory["chamber_sensor_pressure"]),
|
|
"exterior_status" = program.memory["exterior_status"],
|
|
"interior_status" = program.memory["interior_status"],
|
|
"processing" = program.memory["processing"],
|
|
)
|
|
|
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
|
|
|
if (!ui)
|
|
ui = new(user, src, ui_key, "simple_airlock_console.tmpl", name, 470, 290)
|
|
|
|
ui.set_initial_data(data)
|
|
|
|
ui.open()
|
|
|
|
ui.set_auto_update(1)
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/airlock_controller/Topic(href, href_list)
|
|
if(..())
|
|
return
|
|
|
|
usr.set_machine(src)
|
|
src.add_fingerprint(usr)
|
|
|
|
var/clean = 0
|
|
switch(href_list["command"]) //anti-HTML-hacking checks
|
|
if("cycle_ext")
|
|
clean = 1
|
|
if("cycle_int")
|
|
clean = 1
|
|
if("force_ext")
|
|
clean = 1
|
|
if("force_int")
|
|
clean = 1
|
|
if("abort")
|
|
clean = 1
|
|
|
|
if(clean)
|
|
program.receive_user_command(href_list["command"])
|
|
|
|
return 1
|
|
|
|
|
|
//Access controller for door control - used in virology and the like
|
|
/obj/machinery/embedded_controller/radio/airlock/access_controller
|
|
icon = 'icons/obj/airlock_machines.dmi'
|
|
icon_state = "access_control_standby"
|
|
|
|
name = "Access Controller"
|
|
tag_secure = 1
|
|
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/access_controller/update_icon()
|
|
if(on && program)
|
|
if(program.memory["processing"])
|
|
icon_state = "access_control_process"
|
|
else
|
|
icon_state = "access_control_standby"
|
|
else
|
|
icon_state = "access_control_off"
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/access_controller/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
|
|
var/data[0]
|
|
|
|
data = list(
|
|
"exterior_status" = program.memory["exterior_status"],
|
|
"interior_status" = program.memory["interior_status"],
|
|
"processing" = program.memory["processing"]
|
|
)
|
|
|
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
|
|
|
if (!ui)
|
|
ui = new(user, src, ui_key, "door_access_console.tmpl", name, 330, 220)
|
|
|
|
ui.set_initial_data(data)
|
|
|
|
ui.open()
|
|
|
|
ui.set_auto_update(1)
|
|
|
|
/obj/machinery/embedded_controller/radio/airlock/access_controller/Topic(href, href_list)
|
|
if(..())
|
|
return
|
|
|
|
usr.set_machine(src)
|
|
src.add_fingerprint(usr)
|
|
|
|
var/clean = 0
|
|
switch(href_list["command"]) //anti-HTML-hacking checks
|
|
if("cycle_ext_door")
|
|
clean = 1
|
|
if("cycle_int_door")
|
|
clean = 1
|
|
if("force_ext")
|
|
if(program.memory["interior_status"]["state"] == "closed")
|
|
clean = 1
|
|
if("force_int")
|
|
if(program.memory["exterior_status"]["state"] == "closed")
|
|
clean = 1
|
|
|
|
if(clean)
|
|
program.receive_user_command(href_list["command"])
|
|
|
|
return 1 |