diff --git a/code/game/machinery/embedded_controller/airlock_program.dm b/code/game/machinery/embedded_controller/airlock_program.dm index baf846ebf4e..2f7284b3a39 100644 --- a/code/game/machinery/embedded_controller/airlock_program.dm +++ b/code/game/machinery/embedded_controller/airlock_program.dm @@ -13,6 +13,16 @@ var/obj/machinery/embedded_controller/master var/id_tag + +/datum/computer/file/embedded_program/proc/receive_user_command(command) + return + +/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal, receive_method, receive_param) + return + + + +/datum/computer/file/embedded_program/airlock var/tag_exterior_door var/tag_interior_door var/tag_airpump @@ -23,8 +33,7 @@ var/state = STATE_WAIT var/target_state = TARGET_NONE - -/datum/computer/file/embedded_program/New() +/datum/computer/file/embedded_program/airlock/New() ..() memory["chamber_sensor_pressure"] = ONE_ATMOSPHERE memory["external_sensor_pressure"] = 0 //assume vacuum for simple airlock controller @@ -36,10 +45,7 @@ memory["purge"] = 0 memory["secure"] = 0 - - - -/datum/computer/file/embedded_program/proc/receive_signal(datum/signal/signal, receive_method, receive_param) +/datum/computer/file/embedded_program/airlock/receive_signal(datum/signal/signal, receive_method, receive_param) var/receive_tag = signal.data["tag"] if(!receive_tag) return @@ -92,7 +98,7 @@ receive_user_command("cycle_int") -/datum/computer/file/embedded_program/proc/receive_user_command(command) +/datum/computer/file/embedded_program/airlock/receive_user_command(command) var/shutdown_pump = 0 switch(command) if("cycle_ext") @@ -142,7 +148,7 @@ signalPump(tag_airpump, 0) //send a signal to stop pressurizing -/datum/computer/file/embedded_program/proc/process() +/datum/computer/file/embedded_program/airlock/proc/process() if(!state) if(target_state) switch(target_state) @@ -217,38 +223,38 @@ //these are here so that subtypes don't have to make so many assuptions about our implementation -/datum/computer/file/embedded_program/proc/begin_cycle_in() +/datum/computer/file/embedded_program/airlock/proc/begin_cycle_in() state = STATE_WAIT target_state = TARGET_INOPEN -/datum/computer/file/embedded_program/proc/begin_cycle_out() +/datum/computer/file/embedded_program/airlock/proc/begin_cycle_out() state = STATE_WAIT target_state = TARGET_OUTOPEN -/datum/computer/file/embedded_program/proc/stop_cycling() +/datum/computer/file/embedded_program/airlock/proc/stop_cycling() state = STATE_WAIT target_state = TARGET_NONE -/datum/computer/file/embedded_program/proc/done_cycling() +/datum/computer/file/embedded_program/airlock/proc/done_cycling() return (state == STATE_WAIT && target_state == TARGET_NONE) -/datum/computer/file/embedded_program/proc/post_signal(datum/signal/signal, comm_line) +/datum/computer/file/embedded_program/airlock/proc/post_signal(datum/signal/signal, comm_line) if(master) master.post_signal(signal, comm_line) else del(signal) -/datum/computer/file/embedded_program/proc/check_doors_closed() +/datum/computer/file/embedded_program/airlock/proc/check_doors_closed() return (memory["interior_status"]["state"] == "closed" && memory["exterior_status"["state"] == "closed") -/datum/computer/file/embedded_program/proc/signalDoor(var/tag, var/command) +/datum/computer/file/embedded_program/airlock/proc/signalDoor(var/tag, var/command) var/datum/signal/signal = new signal.data["tag"] = tag signal.data["command"] = command post_signal(signal) -/datum/computer/file/embedded_program/proc/signalPump(var/tag, var/power, var/direction, var/pressure) +/datum/computer/file/embedded_program/airlock/proc/signalPump(var/tag, var/power, var/direction, var/pressure) var/datum/signal/signal = new signal.data = list( "tag" = tag, @@ -260,7 +266,7 @@ post_signal(signal) //this is called to set the appropriate door state at the end of a cycling process, or for the exterior buttons -/datum/computer/file/embedded_program/proc/cycleDoors(var/target) +/datum/computer/file/embedded_program/airlock/proc/cycleDoors(var/target) switch(target) if(TARGET_OUTOPEN) toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "close") @@ -289,7 +295,7 @@ Only sends a command if it is needed, i.e. if the door is already open, passing an open command to this proc will not send an additional command to open the door again. ----------------------------------------------------------*/ -/datum/computer/file/embedded_program/proc/toggleDoor(var/list/doorStatus, var/doorTag, var/secure, var/command) +/datum/computer/file/embedded_program/airlock/proc/toggleDoor(var/list/doorStatus, var/doorTag, var/secure, var/command) var/doorCommand = null if(command == "toggle") diff --git a/code/game/machinery/embedded_controller/docking_program.dm b/code/game/machinery/embedded_controller/docking_program.dm index 536b035259f..2bfc434fa33 100644 --- a/code/game/machinery/embedded_controller/docking_program.dm +++ b/code/game/machinery/embedded_controller/docking_program.dm @@ -5,13 +5,13 @@ #define STATE_DOCKED 3 -/datum/computer/file/embedded_program/docking_port +/datum/computer/file/embedded_program/airlock/docking var/tag_target //the tag of the docking controller that we are trying to dock with var/airlock_override = 0 //allows use of the docking port as a normal airlock (normally this is only allowed in STATE_UNDOCKED) var/dock_state = STATE_UNDOCKED var/dock_master = 0 //are we the initiator of the dock? -/datum/computer/file/embedded_program/docking_port/receive_signal(datum/signal/signal, receive_method, receive_param) +/datum/computer/file/embedded_program/airlock/docking/receive_signal(datum/signal/signal, receive_method, receive_param) var/receive_tag = signal.data["tag"] //for docking signals, this is the sender id var/command = signal.data["command"] var/recipient = signal.data["recipient"] @@ -53,11 +53,11 @@ ..() -/datum/computer/file/embedded_program/docking_port/receive_user_command(command) +/datum/computer/file/embedded_program/airlock/docking/receive_user_command(command) if (state == STATE_UNDOCKED || airlock_override) ..(command) -/datum/computer/file/embedded_program/docking_port/process() +/datum/computer/file/embedded_program/airlock/docking/process() ..() //process regular airlock stuff first switch(dock_state) @@ -81,17 +81,17 @@ dock_master = 0 tag_target = null -/datum/computer/file/embedded_program/docking_port/cycleDoors(var/target) +/datum/computer/file/embedded_program/airlock/docking/cycleDoors(var/target) if (state == STATE_UNDOCKED || airlock_override) ..(target) //get the docking port into a good state for docking. -/datum/computer/file/embedded_program/docking_port/proc/begin_dock() +/datum/computer/file/embedded_program/airlock/docking/proc/begin_dock() dock_state = STATE_DOCKING begin_cycle_in() //get the docking port into a good state for undocking. -/datum/computer/file/embedded_program/docking_port/proc/begin_undock() +/datum/computer/file/embedded_program/airlock/docking/proc/begin_undock() dock_state = STATE_UNDOCKING stop_cycling() @@ -99,9 +99,14 @@ toggleDoor(memory["interior_status"], tag_interior_door, memory["secure"], "close") toggleDoor(memory["exterior_status"], tag_exterior_door, memory["secure"], "close") -/datum/computer/file/embedded_program/docking_port/proc/send_docking_command(var/recipient, var/command) +/datum/computer/file/embedded_program/airlock/docking/proc/send_docking_command(var/recipient, var/command) var/datum/signal/signal = new signal.data["tag"] = id_tag signal.data["command"] = command signal.data["recipient"] = recipient post_signal(signal) + +#undef STATE_UNDOCKED +#undef STATE_DOCKING +#undef STATE_UNDOCKING +#undef STATE_DOCKED \ No newline at end of file diff --git a/code/game/machinery/embedded_controller/embedded_controller_base.dm b/code/game/machinery/embedded_controller/embedded_controller_base.dm index 2f2c6029160..337d3774909 100644 --- a/code/game/machinery/embedded_controller/embedded_controller_base.dm +++ b/code/game/machinery/embedded_controller/embedded_controller_base.dm @@ -58,7 +58,7 @@ /obj/machinery/embedded_controller/radio/initialize() set_frequency(frequency) - var/datum/computer/file/embedded_program/new_prog = new + var/datum/computer/file/embedded_program/airlock/new_prog = new new_prog.id_tag = id_tag new_prog.tag_exterior_door = tag_exterior_door