From 8388ecb94a2a6f46be31b7114124874979ee9fdd Mon Sep 17 00:00:00 2001 From: mwerezak Date: Tue, 1 Jul 2014 21:34:05 -0400 Subject: [PATCH] Allows escape pods to be armed from inside the pod --- code/controllers/shuttle_controller.dm | 2 +- .../escape_pod_docking_controller.dm | 38 +++--- .../simple_docking_controller.dm | 4 +- nano/templates/escape_pod_berth_console.tmpl | 42 +++++++ nano/templates/escape_pod_console.tmpl | 81 ++++++++++--- .../templates/simple_docking_console_pod.tmpl | 110 ------------------ 6 files changed, 128 insertions(+), 149 deletions(-) create mode 100644 nano/templates/escape_pod_berth_console.tmpl delete mode 100644 nano/templates/simple_docking_console_pod.tmpl diff --git a/code/controllers/shuttle_controller.dm b/code/controllers/shuttle_controller.dm index 0fa5a9d034..93ba5cc4c7 100644 --- a/code/controllers/shuttle_controller.dm +++ b/code/controllers/shuttle_controller.dm @@ -271,7 +271,7 @@ var/global/datum/shuttle_controller/shuttle_controller dock_controller_map -= C.id_tag //escape pods - if(istype(C, /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod)) + if(istype(C, /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod) && istype(shuttle, /datum/shuttle/ferry/escape_pod)) var/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/EPC = C EPC.pod = shuttle diff --git a/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm b/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm index 5571ef2fc5..f84fbf0b32 100644 --- a/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm +++ b/code/game/machinery/embedded_controller/escape_pod_docking_controller.dm @@ -1,6 +1,6 @@ //This controller goes on the escape pod itself /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod - var/datum/shuttle/ferry/pod + var/datum/shuttle/ferry/escape_pod/pod /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null) var/data[0] @@ -11,36 +11,28 @@ "door_state" = docking_program.memory["door_status"]["state"], "door_lock" = docking_program.memory["door_status"]["lock"], "can_force" = pod.can_force(), + "is_armed" = pod.arming_controller.armed, ) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) if (!ui) - ui = new(user, src, ui_key, "simple_docking_console_pod.tmpl", name, 470, 290) + ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/Topic(href, href_list) - if(..()) - return + if(..()) //I hate this "return 1 to indicate they are not allowed to use the controller" crap, but not sure how else to do it without being able to call machinery/Topic() directly. + return 1 - usr.set_machine(src) - src.add_fingerprint(usr) - - var/clean = 0 - switch(href_list["command"]) //anti-HTML-hacking checks - if("force_door") - clean = 1 - if("toggle_override") - clean = 1 - if("force_launch") - pod.force_launch(src) - - if(clean) - program.receive_user_command(href_list["command"]) + if("manual_arm") + pod.arming_controller.arm() + if("force_launch") + pod.force_launch(src) + + return 0 - return 1 //This controller is for the escape pod berth (station side) @@ -69,7 +61,7 @@ ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) if (!ui) - ui = new(user, src, ui_key, "escape_pod_console.tmpl", name, 470, 290) + ui = new(user, src, ui_key, "escape_pod_berth_console.tmpl", name, 470, 290) ui.set_initial_data(data) ui.open() ui.set_auto_update(1) @@ -78,11 +70,13 @@ if (istype(W, /obj/item/weapon/card/emag) && !emagged) user << "\blue You emag the [src], arming the escape pod!" emagged = 1 - if (istype(docking_program, /datum/computer/file/embedded_program/docking/simple/escape_pod)) var/datum/computer/file/embedded_program/docking/simple/escape_pod/P = docking_program - P.arm() + if (!P.armed) + P.arm() return + + ..() diff --git a/code/game/machinery/embedded_controller/simple_docking_controller.dm b/code/game/machinery/embedded_controller/simple_docking_controller.dm index 60c12b24c1..877247799b 100644 --- a/code/game/machinery/embedded_controller/simple_docking_controller.dm +++ b/code/game/machinery/embedded_controller/simple_docking_controller.dm @@ -29,7 +29,7 @@ /obj/machinery/embedded_controller/radio/simple_docking_controller/Topic(href, href_list) if(..()) - return + return 1 usr.set_machine(src) src.add_fingerprint(usr) @@ -44,7 +44,7 @@ if(clean) program.receive_user_command(href_list["command"]) - return 1 + return 0 //A docking controller program for a simple door based docking port diff --git a/nano/templates/escape_pod_berth_console.tmpl b/nano/templates/escape_pod_berth_console.tmpl new file mode 100644 index 0000000000..756ab7e656 --- /dev/null +++ b/nano/templates/escape_pod_berth_console.tmpl @@ -0,0 +1,42 @@ +
+
+
+ Escape Pod Status: +
+
+ {{if docking_status == "docked"}} + {{if armed}} + ARMED + {{else}} + SYSTEMS OK + {{/if}} + {{else docking_status == "undocking"}} + EJECTING-STAND CLEAR! + {{else docking_status == "undocked"}} + POD EJECTED + {{else docking_status == "docking"}} + INITIALIZING... + {{else}} + ERROR + {{/if}} +
+
+
+
+
+
+ {{if armed}} + {{if docking_status == "docked"}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}} + {{else}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}} + {{/if}} + {{else}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}} + {{/if}} +
+
+
\ No newline at end of file diff --git a/nano/templates/escape_pod_console.tmpl b/nano/templates/escape_pod_console.tmpl index d81b20a576..90346af30e 100644 --- a/nano/templates/escape_pod_console.tmpl +++ b/nano/templates/escape_pod_console.tmpl @@ -5,17 +5,67 @@
{{if docking_status == "docked"}} - {{if armed}} + {{if is_armed}} ARMED {{else}} SYSTEMS OK {{/if}} {{else docking_status == "undocking"}} - EJECTING-STAND CLEAR! + EJECTING {{else docking_status == "undocked"}} POD EJECTED {{else docking_status == "docking"}} - INITIALIZING... + DOCKING + {{else}} + ERROR + {{/if}} +
+ + +
+
+
+ Docking Hatch: +
+
+ {{if docking_status == "docked"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed"}} + CLOSED + {{else}} + ERROR + {{/if}} + {{else docking_status == "docking"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed" && door_lock == "locked"}} + SECURED + {{else door_state == "closed" && door_lock == "unlocked"}} + UNSECURED + {{else}} + ERROR + {{/if}} + {{else docking_status == "undocking"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed" && door_lock == "locked"}} + SECURED + {{else door_state == "closed" && door_lock == "unlocked"}} + UNSECURED + {{else}} + ERROR + {{/if}} + {{else docking_status == "undocked"}} + {{if door_state == "open"}} + OPEN + {{else door_state == "closed" && door_lock == "locked"}} + SECURED + {{else door_state == "closed" && door_lock == "unlocked"}} + UNSECURED + {{else}} + ERROR + {{/if}} {{else}} ERROR {{/if}} @@ -25,18 +75,21 @@
- {{if armed}} - {{if docking_status == "docked"}} - {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}} - {{else}} - {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}} - {{/if}} + {{if docking_status == "docked"}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}} {{else}} - {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}} + {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}} {{/if}}
-
\ No newline at end of file +
+
+
+
+ {{:~link('ARM', 'alert', {'command' : 'manual_arm'}, is_armed ? 'disabled' : null, is_armed ? 'redBackground' : 'yellowBackground')}} + {{:~link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, can_force ? null : 'disabled', can_force ? 'yellowBackground' : null)}} +
+
+
diff --git a/nano/templates/simple_docking_console_pod.tmpl b/nano/templates/simple_docking_console_pod.tmpl deleted file mode 100644 index 676d2a1496..0000000000 --- a/nano/templates/simple_docking_console_pod.tmpl +++ /dev/null @@ -1,110 +0,0 @@ -
-
-
- Docking Port Status: -
-
- {{if docking_status == "docked"}} - {{if !override_enabled}} - DOCKED - {{else}} - DOCKED-OVERRIDE ENABLED - {{/if}} - {{else docking_status == "docking"}} - {{if !override_enabled}} - DOCKING - {{else}} - DOCKING-OVERRIDE ENABLED - {{/if}} - {{else docking_status == "undocking"}} - {{if !override_enabled}} - UNDOCKING - {{else}} - UNDOCKING-OVERRIDE ENABLED - {{/if}} - {{else docking_status == "undocked"}} - {{if !override_enabled}} - NOT IN USE - {{else}} - OVERRIDE ENABLED - {{/if}} - {{else}} - ERROR - {{/if}} -
-
-
-
-
-
- Docking Hatch: -
-
- {{if docking_status == "docked"}} - {{if door_state == "open"}} - OPEN - {{else door_state == "closed"}} - CLOSED - {{else}} - ERROR - {{/if}} - {{else docking_status == "docking"}} - {{if door_state == "open"}} - OPEN - {{else door_state == "closed" && door_lock == "locked"}} - SECURED - {{else door_state == "closed" && door_lock == "unlocked"}} - UNSECURED - {{else}} - ERROR - {{/if}} - {{else docking_status == "undocking"}} - {{if door_state == "open"}} - OPEN - {{else door_state == "closed" && door_lock == "locked"}} - SECURED - {{else door_state == "closed" && door_lock == "unlocked"}} - UNSECURED - {{else}} - ERROR - {{/if}} - {{else docking_status == "undocked"}} - {{if door_state == "open"}} - OPEN - {{else door_state == "closed" && door_lock == "locked"}} - SECURED - {{else door_state == "closed" && door_lock == "unlocked"}} - UNSECURED - {{else}} - ERROR - {{/if}} - {{else}} - ERROR - {{/if}} -
-
-
-
-
-
- {{if docking_status == "docked"}} - {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : null)}} - {{else}} - {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}} - {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}} - {{/if}} -
-
-
-
-
-
- {{if docking_status == "docked"}} - {{:~link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, 'disabled', null)}} - {{else}} - {{:~link('MANUAL EJECT', 'alert', {'command' : 'force_launch'}, can_force ? null : 'disabled', can_force ? 'redBackground' : null)}} - {{/if}} -
-
-