From 1f90fe05c8eae2d08d41aa648ed88d86967c9b60 Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sun, 8 Jun 2014 02:00:03 -0400 Subject: [PATCH] Adds docking controllers to shuttles Shuttles dock at round start. Conflicts: code/modules/shuttles/shuttle.dm maps/tgstation2.dmm --- code/game/gamemodes/gameticker.dm | 2 + .../simple_docking_controller.dm | 2 +- code/modules/shuttles/shuttle.dm | 34 ++++++++++++ nano/templates/simple_airlock_console.tmpl | 53 +++++++------------ nano/templates/simple_docking_console.tmpl | 49 +++++++++++++++++ 5 files changed, 106 insertions(+), 34 deletions(-) create mode 100644 nano/templates/simple_docking_console.tmpl diff --git a/code/game/gamemodes/gameticker.dm b/code/game/gamemodes/gameticker.dm index 2d258832f3c..a59a8c67215 100644 --- a/code/game/gamemodes/gameticker.dm +++ b/code/game/gamemodes/gameticker.dm @@ -133,6 +133,8 @@ var/global/datum/controller/gameticker/ticker //here to initialize the random events nicely at round start setup_economy() + + setup_shuttle_docks() spawn(0)//Forking here so we dont have to wait for this to finish mode.post_setup() diff --git a/code/game/machinery/embedded_controller/simple_docking_controller.dm b/code/game/machinery/embedded_controller/simple_docking_controller.dm index 2158b04f169..cb574b2393f 100644 --- a/code/game/machinery/embedded_controller/simple_docking_controller.dm +++ b/code/game/machinery/embedded_controller/simple_docking_controller.dm @@ -157,4 +157,4 @@ set category = "Debug" set src in view(1) src.program:initiate_undocking() -*/ \ No newline at end of file +*/ diff --git a/code/modules/shuttles/shuttle.dm b/code/modules/shuttles/shuttle.dm index 258e5f85d93..ac50f4c36de 100644 --- a/code/modules/shuttles/shuttle.dm +++ b/code/modules/shuttles/shuttle.dm @@ -13,6 +13,10 @@ var/global/datum/shuttle_controller/shuttles //Shuttles with multiple destinations don't quite behave in the same way as ferries. var/list/multi_shuttles = list() + //docking stuff + var/list/docking_controller = list() + var/list/docking_targets = list() + /datum/shuttle_controller/New() ..() @@ -23,6 +27,7 @@ var/global/datum/shuttle_controller/shuttles moving["Supply"] = 0 areas_offsite["Supply"] = locate(/area/supply/dock) areas_station["Supply"] = locate(/area/supply/station) + docking_targets["Supply"] = list(null, null) // Admin shuttles. locations["Centcom"] = 1 @@ -30,18 +35,21 @@ var/global/datum/shuttle_controller/shuttles moving["Centcom"] = 0 areas_offsite["Centcom"] = locate(/area/shuttle/transport1/centcom) areas_station["Centcom"] = locate(/area/shuttle/transport1/station) + docking_targets["Centcom"] = list(null, null) locations["Administration"] = 1 delays["Administration"] = 0 moving["Administration"] = 0 areas_offsite["Administration"] = locate(/area/shuttle/administration/centcom) areas_station["Administration"] = locate(/area/shuttle/administration/station) + docking_targets["Administration"] = list(null, null) locations["Alien"] = 0 delays["Alien"] = 0 moving["Alien"] = 0 areas_offsite["Alien"] = locate(/area/shuttle/alien/base) areas_station["Alien"] = locate(/area/shuttle/alien/mine) + docking_targets["Alien"] = list(null, null) // Public shuttles. locations["Engineering"] = 1 @@ -49,18 +57,21 @@ var/global/datum/shuttle_controller/shuttles moving["Engineering"] = 0 areas_offsite["Engineering"] = locate(/area/shuttle/constructionsite/site) areas_station["Engineering"] = locate(/area/shuttle/constructionsite/station) + docking_targets["Engineering"] = list(null, null) locations["Mining"] = 0 delays["Mining"] = 10 moving["Mining"] = 0 areas_offsite["Mining"] = locate(/area/shuttle/mining/outpost) areas_station["Mining"] = locate(/area/shuttle/mining/station) + docking_targets["Mining"] = list(null, null) locations["Research"] = 0 delays["Research"] = 10 moving["Research"] = 0 areas_offsite["Research"] = locate(/area/shuttle/research/outpost) areas_station["Research"] = locate(/area/shuttle/research/station) + docking_targets["Research"] = list("research_dock_airlock", "research_dock_airlock") //Vox Shuttle. var/datum/multi_shuttle/VS = new @@ -203,9 +214,20 @@ var/global/datum/shuttle_controller/shuttles req_access = list(access_engine) circuit = "/obj/item/weapon/circuitboard/engineering_shuttle" + //for mapping var/shuttle_tag // Used to coordinate data in shuttle controller. + var/docking_controller_tag //tag of the controller used to coordinate docking + + var/datum/computer/file/embedded_program/docking/docking_controller //the controller itself var/hacked = 0 // Has been emagged, no access restrictions. +/obj/machinery/computer/shuttle_control/initialize() + //search for our controller, if we have one. + if (docking_controller_tag) + for (var/obj/machinery/embedded_controller/radio/C in machines) //only radio controllers are supported, for now... + if (C.id_tag == docking_controller_tag && istype(C.program, /datum/computer/file/embedded_program/docking)) + docking_controller = C.program + /obj/machinery/computer/shuttle_control/attack_hand(user as mob) if(..(user)) @@ -250,3 +272,15 @@ var/global/datum/shuttle_controller/shuttles /obj/machinery/computer/shuttle_control/bullet_act(var/obj/item/projectile/Proj) visible_message("[Proj] ricochets off [src]!") + +//makes all shuttles docked to something at round start go into the docked state +/proc/setup_shuttle_docks() + var/list/setup_complete = list() //so we dont setup the same shuttle repeatedly + + for (var/obj/machinery/computer/shuttle_control/S in machines) + var/location = shuttles.locations[S.shuttle_tag] + var/dock_target = shuttles.docking_targets[S.shuttle_tag][location+1] //damned byond is 1-indexed - don't forget + + if (!(S.shuttle_tag in setup_complete) && S.docking_controller && dock_target) + S.docking_controller.initiate_docking(dock_target) + setup_complete += S.shuttle_tag diff --git a/nano/templates/simple_airlock_console.tmpl b/nano/templates/simple_airlock_console.tmpl index 5679295e6ec..99752958599 100644 --- a/nano/templates/simple_airlock_console.tmpl +++ b/nano/templates/simple_airlock_console.tmpl @@ -1,49 +1,36 @@
- Docking Port Status: + Chamber Pressure:
- {{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}} - UNDOCKED - {{else}} - UNDOCKED-OVERRIDE ENABLED - {{/if}} - {{else}} - ERROR - {{/if}} + {{:~displayBar(chamber_pressure, 0, 200, chamber_pressure < 80 || chamber_pressure > 120 ? 'bad' : chamber_pressure < 95 || chamber_pressure > 110 ? 'average' : 'good')}} +
+ {{:chamber_pressure}} kPa +
+
+ {{:~link('Cycle to Exterior', 'arrowthickstop-1-w', {'command' : 'cycle_ext'}, processing ? 'disabled' : null)}} + {{:~link('Cycle to Interior', 'arrowthickstop-1-e', {'command' : 'cycle_int'}, processing ? 'disabled' : null)}} +
- {{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)}} + {{if interior_status.state == "open"}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, 'redBackground')}} {{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')}} + {{:~link('Force exterior door', 'alert', {'command' : 'force_ext'}, null, processing ? 'yellowBackground' : null)}} + {{/if}} + {{if exterior_status.state == "open"}} + {{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, 'redBackground')}} + {{else}} + {{:~link('Force interior door', 'alert', {'command' : 'force_int'}, null, processing ? 'yellowBackground' : null)}} {{/if}}
+
+ {{:~link('Abort', 'cancel', {'command' : 'abort'}, processing ? null : 'disabled', processing ? 'redBackground' : null)}} +
\ No newline at end of file diff --git a/nano/templates/simple_docking_console.tmpl b/nano/templates/simple_docking_console.tmpl new file mode 100644 index 00000000000..5679295e6ec --- /dev/null +++ b/nano/templates/simple_docking_console.tmpl @@ -0,0 +1,49 @@ +
+
+
+ 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}} + UNDOCKED + {{else}} + UNDOCKED-OVERRIDE ENABLED + {{/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}} +
+
+
\ No newline at end of file