Allows escape pods to be armed from inside the pod

This commit is contained in:
mwerezak
2014-07-01 21:34:05 -04:00
parent 1c7c48165b
commit 8388ecb94a
6 changed files with 128 additions and 149 deletions

View File

@@ -271,7 +271,7 @@ var/global/datum/shuttle_controller/shuttle_controller
dock_controller_map -= C.id_tag dock_controller_map -= C.id_tag
//escape pods //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 var/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/EPC = C
EPC.pod = shuttle EPC.pod = shuttle

View File

@@ -1,6 +1,6 @@
//This controller goes on the escape pod itself //This controller goes on the escape pod itself
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod /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) /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] var/data[0]
@@ -11,36 +11,28 @@
"door_state" = docking_program.memory["door_status"]["state"], "door_state" = docking_program.memory["door_status"]["state"],
"door_lock" = docking_program.memory["door_status"]["lock"], "door_lock" = docking_program.memory["door_status"]["lock"],
"can_force" = pod.can_force(), "can_force" = pod.can_force(),
"is_armed" = pod.arming_controller.armed,
) )
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui) 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.set_initial_data(data)
ui.open() ui.open()
ui.set_auto_update(1) ui.set_auto_update(1)
/obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/Topic(href, href_list) /obj/machinery/embedded_controller/radio/simple_docking_controller/escape_pod/Topic(href, href_list)
if(..()) 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 return 1
usr.set_machine(src) if("manual_arm")
src.add_fingerprint(usr) pod.arming_controller.arm()
if("force_launch")
pod.force_launch(src)
var/clean = 0 return 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"])
return 1
//This controller is for the escape pod berth (station side) //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) ui = nanomanager.try_update_ui(user, src, ui_key, ui, data)
if (!ui) 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.set_initial_data(data)
ui.open() ui.open()
ui.set_auto_update(1) ui.set_auto_update(1)
@@ -78,12 +70,14 @@
if (istype(W, /obj/item/weapon/card/emag) && !emagged) if (istype(W, /obj/item/weapon/card/emag) && !emagged)
user << "\blue You emag the [src], arming the escape pod!" user << "\blue You emag the [src], arming the escape pod!"
emagged = 1 emagged = 1
if (istype(docking_program, /datum/computer/file/embedded_program/docking/simple/escape_pod)) 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 var/datum/computer/file/embedded_program/docking/simple/escape_pod/P = docking_program
P.arm() if (!P.armed)
P.arm()
return return
..()
//A docking controller program for a simple door based docking port //A docking controller program for a simple door based docking port

View File

@@ -29,7 +29,7 @@
/obj/machinery/embedded_controller/radio/simple_docking_controller/Topic(href, href_list) /obj/machinery/embedded_controller/radio/simple_docking_controller/Topic(href, href_list)
if(..()) if(..())
return return 1
usr.set_machine(src) usr.set_machine(src)
src.add_fingerprint(usr) src.add_fingerprint(usr)
@@ -44,7 +44,7 @@
if(clean) if(clean)
program.receive_user_command(href_list["command"]) program.receive_user_command(href_list["command"])
return 1 return 0
//A docking controller program for a simple door based docking port //A docking controller program for a simple door based docking port

View File

@@ -0,0 +1,42 @@
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Escape Pod Status:
</div>
<div class="itemContent">
{{if docking_status == "docked"}}
{{if armed}}
<span class="average">ARMED</span>
{{else}}
<span class="good">SYSTEMS OK</span>
{{/if}}
{{else docking_status == "undocking"}}
<span class="average">EJECTING-STAND CLEAR!</span>
{{else docking_status == "undocked"}}
<span class="idle">POD EJECTED</span>
{{else docking_status == "docking"}}
<span class="good">INITIALIZING...</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemContent" style="padding-top: 2px; width: 100%">
{{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}}
</div>
</div>
</div>

View File

@@ -5,17 +5,67 @@
</div> </div>
<div class="itemContent"> <div class="itemContent">
{{if docking_status == "docked"}} {{if docking_status == "docked"}}
{{if armed}} {{if is_armed}}
<span class="average">ARMED</span> <span class="average">ARMED</span>
{{else}} {{else}}
<span class="good">SYSTEMS OK</span> <span class="good">SYSTEMS OK</span>
{{/if}} {{/if}}
{{else docking_status == "undocking"}} {{else docking_status == "undocking"}}
<span class="average">EJECTING-STAND CLEAR!</span> <span class="average">EJECTING</span>
{{else docking_status == "undocked"}} {{else docking_status == "undocked"}}
<span class="idle">POD EJECTED</span> <span class="idle">POD EJECTED</span>
{{else docking_status == "docking"}} {{else docking_status == "docking"}}
<span class="average">INITIALIZING...</span> <span class="average">DOCKING</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Docking Hatch:
</div>
<div class="itemContent">
{{if docking_status == "docked"}}
{{if door_state == "open"}}
<span class="good">OPEN</span>
{{else door_state == "closed"}}
<span class="good">CLOSED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else docking_status == "docking"}}
{{if door_state == "open"}}
<span class="good">OPEN</span>
{{else door_state == "closed" && door_lock == "locked"}}
<span class="good">SECURED</span>
{{else door_state == "closed" && door_lock == "unlocked"}}
<span class="good">UNSECURED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else docking_status == "undocking"}}
{{if door_state == "open"}}
<span class="average">OPEN</span>
{{else door_state == "closed" && door_lock == "locked"}}
<span class="good">SECURED</span>
{{else door_state == "closed" && door_lock == "unlocked"}}
<span class="average">UNSECURED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else docking_status == "undocked"}}
{{if door_state == "open"}}
<span class="bad">OPEN</span>
{{else door_state == "closed" && door_lock == "locked"}}
<span class="good">SECURED</span>
{{else door_state == "closed" && door_lock == "unlocked"}}
<span class="bad">UNSECURED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else}} {{else}}
<span class="bad">ERROR</span> <span class="bad">ERROR</span>
{{/if}} {{/if}}
@@ -25,18 +75,21 @@
<div class="item" style="padding-top: 10px"> <div class="item" style="padding-top: 10px">
<div class="item"> <div class="item">
<div class="itemContent" style="padding-top: 2px; width: 100%"> <div class="itemContent" style="padding-top: 2px; width: 100%">
{{if armed}} {{if docking_status == "docked"}}
{{if docking_status == "docked"}} {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}}
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', null)}} {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 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}} {{else}}
{{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, 'disabled', null)}} {{:~link('Force exterior door', 'alert', {'command' : 'force_door'}, override_enabled ? null : 'disabled', override_enabled? 'redBackground' : null)}}
{{:~link('Override', 'alert', {'command' : 'toggle_override'}, 'disabled', null)}} {{:~link('Override', 'alert', {'command' : 'toggle_override'}, null, override_enabled ? 'redBackground' : 'yellowBackground')}}
{{/if}} {{/if}}
</div> </div>
</div> </div>
</div> </div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemContent" style="padding-top: 2px; width: 100%">
{{:~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)}}
</div>
</div>
</div>

View File

@@ -1,110 +0,0 @@
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Docking Port Status:
</div>
<div class="itemContent">
{{if docking_status == "docked"}}
{{if !override_enabled}}
<span class="good">DOCKED</span>
{{else}}
<span class="bad">DOCKED-OVERRIDE ENABLED</span>
{{/if}}
{{else docking_status == "docking"}}
{{if !override_enabled}}
<span class="average">DOCKING</span>
{{else}}
<span class="bad">DOCKING-OVERRIDE ENABLED</span>
{{/if}}
{{else docking_status == "undocking"}}
{{if !override_enabled}}
<span class="average">UNDOCKING</span>
{{else}}
<span class="bad">UNDOCKING-OVERRIDE ENABLED</span>
{{/if}}
{{else docking_status == "undocked"}}
{{if !override_enabled}}
<span class="idle">NOT IN USE</span>
{{else}}
<span class="bad" style="float:left">OVERRIDE ENABLED</span>
{{/if}}
{{else}}
<span class="bad">ERROR</span>
{{/if}}
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemLabel">
Docking Hatch:
</div>
<div class="itemContent">
{{if docking_status == "docked"}}
{{if door_state == "open"}}
<span class="good">OPEN</span>
{{else door_state == "closed"}}
<span class="good">CLOSED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else docking_status == "docking"}}
{{if door_state == "open"}}
<span class="good">OPEN</span>
{{else door_state == "closed" && door_lock == "locked"}}
<span class="good">SECURED</span>
{{else door_state == "closed" && door_lock == "unlocked"}}
<span class="good">UNSECURED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else docking_status == "undocking"}}
{{if door_state == "open"}}
<span class="average">OPEN</span>
{{else door_state == "closed" && door_lock == "locked"}}
<span class="good">SECURED</span>
{{else door_state == "closed" && door_lock == "unlocked"}}
<span class="average">UNSECURED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else docking_status == "undocked"}}
{{if door_state == "open"}}
<span class="bad">OPEN</span>
{{else door_state == "closed" && door_lock == "locked"}}
<span class="good">SECURED</span>
{{else door_state == "closed" && door_lock == "unlocked"}}
<span class="bad">UNSECURED</span>
{{else}}
<span class="bad">ERROR</span>
{{/if}}
{{else}}
<span class="bad">ERROR</span>
{{/if}}
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemContent" style="padding-top: 2px; width: 100%">
{{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}}
</div>
</div>
</div>
<div class="item" style="padding-top: 10px">
<div class="item">
<div class="itemContent" style="padding-top: 2px; width: 100%">
{{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}}
</div>
</div>
</div>