From e16a3f4b3de4e1116af79eee8770a8b3ebe69724 Mon Sep 17 00:00:00 2001 From: Leshana Date: Wed, 17 May 2017 00:59:10 -0400 Subject: [PATCH] Updated crew monitor computer to support multi-z output and nanomaps. --- code/datums/repositories/crew.dm | 9 +++++---- code/modules/nano/modules/crew_monitor.dm | 12 +++++++++++- nano/templates/crew_monitor_map_content.tmpl | 5 +---- nano/templates/crew_monitor_map_header.tmpl | 8 ++++++++ 4 files changed, 25 insertions(+), 9 deletions(-) diff --git a/code/datums/repositories/crew.dm b/code/datums/repositories/crew.dm index 6fbe1863da..ae73c98c8d 100644 --- a/code/datums/repositories/crew.dm +++ b/code/datums/repositories/crew.dm @@ -7,12 +7,12 @@ var/global/datum/repository/crew/crew_repository = new() cache_data = list() ..() -/datum/repository/crew/proc/health_data(var/turf/T) +/datum/repository/crew/proc/health_data(var/zLevel) var/list/crewmembers = list() - if(!T) + if(!zLevel) return crewmembers - var/z_level = "[T.z]" + var/z_level = "[zLevel]" var/datum/cache_entry/cache_entry = cache_data[z_level] if(!cache_entry) cache_entry = new/datum/cache_entry @@ -24,7 +24,7 @@ var/global/datum/repository/crew/crew_repository = new() var/tracked = scan() for(var/obj/item/clothing/under/C in tracked) var/turf/pos = get_turf(C) - if((C) && (C.has_sensor) && (pos) && (T && pos.z == T.z) && (C.sensor_mode != SUIT_SENSOR_OFF)) + if((C) && (C.has_sensor) && (pos) && (pos.z == zLevel) && (C.sensor_mode != SUIT_SENSOR_OFF)) if(istype(C.loc, /mob/living/carbon/human)) var/mob/living/carbon/human/H = C.loc if(H.w_uniform != C) @@ -51,6 +51,7 @@ var/global/datum/repository/crew/crew_repository = new() crewmemberData["area"] = sanitize(A.name) crewmemberData["x"] = pos.x crewmemberData["y"] = pos.y + crewmemberData["z"] = pos.z crewmembers[++crewmembers.len] = crewmemberData diff --git a/code/modules/nano/modules/crew_monitor.dm b/code/modules/nano/modules/crew_monitor.dm index e71dc5ac7e..a3b5ba19a7 100644 --- a/code/modules/nano/modules/crew_monitor.dm +++ b/code/modules/nano/modules/crew_monitor.dm @@ -20,7 +20,12 @@ var/turf/T = get_turf(nano_host()) data["isAI"] = isAI(user) - data["crewmembers"] = crew_repository.health_data(T) + + data["station_levels"] = get_z_levels(T) + var/list/crewmembers = list() + for(var/z in data["station_levels"]) + crewmembers += crew_repository.health_data(z) + data["crewmembers"] = crewmembers ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open) if(!ui) @@ -30,6 +35,8 @@ ui.add_template("mapContent", "crew_monitor_map_content.tmpl") // adding a template with the key "mapHeader" replaces the map header content ui.add_template("mapHeader", "crew_monitor_map_header.tmpl") + if(!(ui.map_z_level in data["station_levels"])) + ui.set_map_z_level(data["station_levels"][1]) ui.set_initial_data(data) ui.open() @@ -37,6 +44,9 @@ // should make the UI auto-update; doesn't seem to? ui.set_auto_update(1) +/datum/nano_module/crew_monitor/proc/get_z_levels(var/turf/T) + return list(T.z) + /*/datum/nano_module/crew_monitor/proc/scan() for(var/mob/living/carbon/human/H in mob_list) if(istype(H.w_uniform, /obj/item/clothing/under)) diff --git a/nano/templates/crew_monitor_map_content.tmpl b/nano/templates/crew_monitor_map_content.tmpl index 9f178406f8..432649926c 100644 --- a/nano/templates/crew_monitor_map_content.tmpl +++ b/nano/templates/crew_monitor_map_content.tmpl @@ -3,7 +3,7 @@ Title: Crew Monitoring Console (Map content) Used In File(s): \code\game\machinery\computer\crew.dm --> {{for data.crewmembers}} - {{if value.sensor_type == 3}} + {{if value.sensor_type == 3 && value.z == config.mapZLevel}}
{{/if}} {{/for}} - -
-
\ No newline at end of file diff --git a/nano/templates/crew_monitor_map_header.tmpl b/nano/templates/crew_monitor_map_header.tmpl index f9f5e2f707..c3417e5242 100644 --- a/nano/templates/crew_monitor_map_header.tmpl +++ b/nano/templates/crew_monitor_map_header.tmpl @@ -3,6 +3,14 @@ Title: Crew Monitoring Console (Map header) Used In File(s): \code\game\machinery\computer\crew.dm --> {{:helper.link('Show Detail List', 'script', {'showMap' : 0})}} +{{if data.station_levels.length > 1}} +
+ Z Level:  + {{for data.station_levels }} + {{:helper.link(value, null, {'mapZLevel' : value}) }} + {{/for}} +
+{{/if}}
Zoom Level: