mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-12 03:02:54 +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()
|
cache_data = list()
|
||||||
..()
|
..()
|
||||||
|
|
||||||
/datum/repository/crew/proc/health_data(var/turf/T)
|
/datum/repository/crew/proc/health_data(var/zLevel)
|
||||||
var/list/crewmembers = list()
|
var/list/crewmembers = list()
|
||||||
if(!T)
|
if(!zLevel)
|
||||||
return crewmembers
|
return crewmembers
|
||||||
|
|
||||||
var/z_level = "[T.z]"
|
var/z_level = "[zLevel]"
|
||||||
var/datum/cache_entry/cache_entry = cache_data[z_level]
|
var/datum/cache_entry/cache_entry = cache_data[z_level]
|
||||||
if(!cache_entry)
|
if(!cache_entry)
|
||||||
cache_entry = new/datum/cache_entry
|
cache_entry = new/datum/cache_entry
|
||||||
@@ -24,7 +24,7 @@ var/global/datum/repository/crew/crew_repository = new()
|
|||||||
var/tracked = scan()
|
var/tracked = scan()
|
||||||
for(var/obj/item/clothing/under/C in tracked)
|
for(var/obj/item/clothing/under/C in tracked)
|
||||||
var/turf/pos = get_turf(C)
|
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))
|
if(istype(C.loc, /mob/living/carbon/human))
|
||||||
var/mob/living/carbon/human/H = C.loc
|
var/mob/living/carbon/human/H = C.loc
|
||||||
if(H.w_uniform != C)
|
if(H.w_uniform != C)
|
||||||
@@ -51,6 +51,7 @@ var/global/datum/repository/crew/crew_repository = new()
|
|||||||
crewmemberData["area"] = sanitize(A.name)
|
crewmemberData["area"] = sanitize(A.name)
|
||||||
crewmemberData["x"] = pos.x
|
crewmemberData["x"] = pos.x
|
||||||
crewmemberData["y"] = pos.y
|
crewmemberData["y"] = pos.y
|
||||||
|
crewmemberData["z"] = pos.z
|
||||||
|
|
||||||
crewmembers[++crewmembers.len] = crewmemberData
|
crewmembers[++crewmembers.len] = crewmemberData
|
||||||
|
|
||||||
|
|||||||
@@ -20,7 +20,12 @@
|
|||||||
var/turf/T = get_turf(nano_host())
|
var/turf/T = get_turf(nano_host())
|
||||||
|
|
||||||
data["isAI"] = isAI(user)
|
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)
|
ui = nanomanager.try_update_ui(user, src, ui_key, ui, data, force_open)
|
||||||
if(!ui)
|
if(!ui)
|
||||||
@@ -30,6 +35,8 @@
|
|||||||
ui.add_template("mapContent", "crew_monitor_map_content.tmpl")
|
ui.add_template("mapContent", "crew_monitor_map_content.tmpl")
|
||||||
// adding a template with the key "mapHeader" replaces the map header content
|
// adding a template with the key "mapHeader" replaces the map header content
|
||||||
ui.add_template("mapHeader", "crew_monitor_map_header.tmpl")
|
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.set_initial_data(data)
|
||||||
ui.open()
|
ui.open()
|
||||||
@@ -37,6 +44,9 @@
|
|||||||
// should make the UI auto-update; doesn't seem to?
|
// should make the UI auto-update; doesn't seem to?
|
||||||
ui.set_auto_update(1)
|
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()
|
/*/datum/nano_module/crew_monitor/proc/scan()
|
||||||
for(var/mob/living/carbon/human/H in mob_list)
|
for(var/mob/living/carbon/human/H in mob_list)
|
||||||
if(istype(H.w_uniform, /obj/item/clothing/under))
|
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
|
Used In File(s): \code\game\machinery\computer\crew.dm
|
||||||
-->
|
-->
|
||||||
{{for data.crewmembers}}
|
{{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="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">
|
<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}})
|
{{: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>
|
</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{/for}}
|
{{/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
|
Used In File(s): \code\game\machinery\computer\crew.dm
|
||||||
-->
|
-->
|
||||||
{{:helper.link('Show Detail List', 'script', {'showMap' : 0})}}
|
{{: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;">
|
<div style="float: right; width: 240px;">
|
||||||
<span style="float: left;">Zoom Level: </span>
|
<span style="float: left;">Zoom Level: </span>
|
||||||
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
|
<div unselectable="on" class="link zoomLink" data-zoom-level="4">x1.0</div>
|
||||||
|
|||||||
Reference in New Issue
Block a user