mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Updated crew monitor computer to support multi-z output and nanomaps.
This commit is contained in:
@@ -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
|
||||
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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}}
|
||||
<div class="mapIcon mapIcon16 rank-{{:value.rank.ckey()}} {{:value.dead ? 'dead' : 'alive'}}" style="left: {{:(value.x + 0.2)}}px; bottom: {{:(value.y - 14.75)}}px;" unselectable="on">
|
||||
<div class="tooltip hidden">
|
||||
{{:value.name}} ({{:value.assignment}}) ({{:value.dead ? "<span class='bad'>Deceased</span>" : "<span class='good'>Living</span>"}}) (<span class="oxyloss">{{:value.oxy}}</span>/<span class="toxin">{{:value.tox}}</span>/<span class="burn">{{:value.fire}}</span>/<span class="brute">{{:value.brute}}</span>) ({{:value.area}}: {{:value.x}}, {{:value.y}})
|
||||
@@ -11,6 +11,3 @@ Used In File(s): \code\game\machinery\computer\crew.dm
|
||||
</div>
|
||||
{{/if}}
|
||||
{{/for}}
|
||||
|
||||
<div class="mapIcon mapIcon16 rank-captain alive" style="left: 10px; bottom: 10px;" unselectable="on"></div>
|
||||
<div style="position: absolute; width: 1px; height: 1px; background: #00ff00; left: 10px; bottom: 10px;" unselectable="on"></div>
|
||||
@@ -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}}
|
||||
<div style="float: right;">
|
||||
<span style="float: left;">Z Level: </span>
|
||||
{{for data.station_levels }}
|
||||
{{:helper.link(value, null, {'mapZLevel' : value}) }}
|
||||
{{/for}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div style="float: right; width: 240px;">
|
||||
<span style="float: left;">Zoom Level: </span>
|
||||
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
|
||||
|
||||
Reference in New Issue
Block a user