From af6ebb996f0eb8b4e0cf9f785ad9fcfc5d66653d Mon Sep 17 00:00:00 2001 From: Aronai Sieyes Date: Tue, 31 Mar 2020 18:36:51 -0400 Subject: [PATCH] Adds airlock setup helpers --- .../embedded_controller/mapping_helpers.dm | 140 ++++++++++++++++++ icons/misc/map_helpers.dmi | Bin 0 -> 766 bytes vorestation.dme | 1 + 3 files changed, 141 insertions(+) create mode 100644 code/game/machinery/embedded_controller/mapping_helpers.dm create mode 100644 icons/misc/map_helpers.dmi diff --git a/code/game/machinery/embedded_controller/mapping_helpers.dm b/code/game/machinery/embedded_controller/mapping_helpers.dm new file mode 100644 index 0000000000..c4db355ab6 --- /dev/null +++ b/code/game/machinery/embedded_controller/mapping_helpers.dm @@ -0,0 +1,140 @@ +/* + +Note that these have to be in the same /area that the controller is in for them to function. +You still need to set the controller's "id_tag" to something unique. +Any frequency works, it's self-setting, but it seems like people have decided 1380 for airlocks so maybe set that on the controller too. + +*/ + +/obj/effect/map_helper/airlock + name = "use a subtype!" + icon = 'icons/misc/map_helpers.dmi' + plane = 20 //I dunno just high. + alpha = 200 + + var/area/my_area + //The controller we're wanting our device to use + var/obj/machinery/embedded_controller/radio/my_controller + var/my_controller_type = /obj/machinery/embedded_controller/radio/airlock/ + //The device we're setting up + var/my_device + var/my_device_type + //Most things have a radio tag of some sort that needs adjusting + var/tag_addon + +/obj/effect/map_helper/airlock/Initialize() + ..() + my_area = get_area(src) + my_controller = locate() in my_area + my_device = locate(my_device_type) in get_turf(src) + if(!my_device) + to_world("WARNING:Airlock helper '[name]' couldn't find what it wanted at: X:[x] Y:[y] Z:[z]") + else if(!my_controller) + to_world("WARNING:Airlock helper '[name]' couldn't find a controller at: X:[x] Y:[y] Z:[z]") + else if(!my_controller.id_tag) + to_world("WARNING:Airlock helper '[name]' found a controller without an 'id_tag' set: X:[x] Y:[y] Z:[z]") + else + setup() + return INITIALIZE_HINT_QDEL + +/obj/effect/map_helper/airlock/Destroy() + my_controller = null + my_area = null + my_device = null + return ..() + +/obj/effect/map_helper/airlock/proc/setup() + return //Stub for subtypes + + +/* + Doors +*/ +/obj/effect/map_helper/airlock/door + name = "use a subtype! - airlock door" + my_device_type = /obj/machinery/door/airlock + +/obj/effect/map_helper/airlock/door/setup() + var/obj/machinery/door/airlock/my_airlock = my_device + my_airlock.lock() + my_airlock.frequency = my_controller.frequency + my_airlock.id_tag = my_controller.id_tag + tag_addon + if(my_airlock.radio_connection) //Initialized before us + my_airlock.set_frequency(my_controller.frequency) + +/obj/effect/map_helper/airlock/door/ext_door + name = "exterior airlock door" + icon_state = "doorout" + tag_addon = "_outer" + +/obj/effect/map_helper/airlock/door/int_door + name = "interior airlock door" + icon_state = "doorin" + tag_addon = "_inner" + +/obj/effect/map_helper/airlock/door/simple + name = "simple docking controller hatch" + icon_state = "doorsimple" + tag_addon = "_hatch" + my_controller_type = /obj/machinery/embedded_controller/radio/simple_docking_controller + + +/* + Atmos +*/ +/obj/effect/map_helper/airlock/atmos + name = "use a subtype! - airlock pump" + my_device_type = /obj/machinery/atmospherics/unary/vent_pump + +/obj/effect/map_helper/airlock/atmos/setup() + var/obj/machinery/atmospherics/unary/vent_pump/my_pump = my_device + my_pump.frequency = my_controller.frequency //Unlike doors, these set up their radios in atmos init, so they won't have gone before us. + my_pump.id_tag = my_controller.id_tag + tag_addon + +/obj/effect/map_helper/airlock/atmos/chamber_pump + name = "chamber pump" + icon_state = "pump" + tag_addon = "_pump" + + +/* + Sensors - did you know they function as buttons? You don't also need a button. +*/ +/obj/effect/map_helper/airlock/sensor + name = "use a subtype! - airlock sensor" + my_device_type = /obj/machinery/airlock_sensor + var/command + +/obj/effect/map_helper/airlock/sensor/setup() + var/obj/machinery/airlock_sensor/my_sensor = my_device + my_sensor.id_tag = my_controller.id_tag + tag_addon + my_sensor.frequency = my_controller.frequency + if(my_sensor.radio_connection) //Initialized before us + my_sensor.set_frequency(my_controller.frequency) + if(command) + my_sensor.command = command + +/obj/effect/map_helper/airlock/sensor/ext_sensor + name = "exterior sensor" + icon_state = "sensout" + tag_addon = "_exterior_sensor" + command = "cycle_exterior" + +/obj/effect/map_helper/airlock/sensor/chamber_sensor + name = "chamber sensor" + icon_state = "sens" + tag_addon = "_sensor" + command = "cycle" + +/obj/effect/map_helper/airlock/sensor/int_sensor + name = "interior sensor" + icon_state = "sensin" + tag_addon = "_interior_sensor" + command = "cycle_interior" + +/* + Buttons +*/ + +/obj/effect/map_helper/airlock/buttons + name = "Just use a sensor instead. They are actually buttons." diff --git a/icons/misc/map_helpers.dmi b/icons/misc/map_helpers.dmi new file mode 100644 index 0000000000000000000000000000000000000000..b59020c3b81476901b70c7a22ad9e4195e0b47ec GIT binary patch literal 766 zcmVb&JG=qp00001bW%=J06^y0W&i*HqIy(VbVOxyV{&P5 zbZKvH004NLQ&w2c!Hqq0B(_N;00Ps3l!A;Bb1UQ|4->_`2wXm+KDsu8Hxo5o+ko2`fpKUArf6VV0W({S?Z7k}v;)Cn z)BscXR{(tbQ3p(6846(DsK0cOYgqEwap( zqb&7gj5B%w6@C^;EKq#GyYs$m`KQFC-^$Q^WI~K4iz;DWa4Sd)Sfnt`BifM%^^}{phERrJY zOc#+wS!V|CY0s~)&VhUC-vQPDFvOwY79L;?0rF9!0oF$V?Cu|d23Y67&FmK~Y6Nif zxrG-X^>e|2pI`;ieNd+Nn^VJ3`gTCMDmRbwIo| zTO4+8%{n07nsq?DHLFtZlKLE;ZvIQD^Iq*JX;AH13Do9)4pinp0*d4O03e_L#h`%s zzhn{aTL3~&=U>t=>;a&i!}1Xc+X*=Ij%omZ;%xz9IZN*6A>gFLEDYpX;xSbKKw23H w9{7