Ports sensor monitoring program to VueUI. (#7817)

This commit is contained in:
Karolis
2020-01-04 12:29:37 +01:00
committed by Matt Atlas
parent f975c2e07b
commit a239c37a1b
7 changed files with 209 additions and 52 deletions
+33 -41
View File
@@ -1,5 +1,13 @@
#define ZERO_WIDTH_SPACE "​" //prevents the UI elements from popping out of place when viewport gets too small
// Oxyginetion states
#define OXYGENATION_STATE_HIGH 5
#define OXYGENATION_STATE_NORMAL 4
#define OXYGENATION_STATE_LOW 3
#define OXYGENATION_STATE_VERY_LOW 2
#define OXYGENATION_STATE_NONE 1
#define OXYGENATION_STATE_UNDEFINED 0
var/global/datum/repository/crew/crew_repository = new()
/datum/repository/crew
@@ -23,7 +31,8 @@ var/global/datum/repository/crew/crew_repository = new()
return cache_entry.data
var/tracked = scan()
for(var/obj/item/clothing/under/C in tracked)
for(var/t in tracked)
var/obj/item/clothing/under/C = t
var/turf/pos = get_turf(C)
if((C) && (C.has_sensor) && (pos) && (pos.z == z_level) && (C.sensor_mode != SUIT_SENSOR_OFF) && !within_jamming_range(C))
if(istype(C.loc, /mob/living/carbon/human))
@@ -31,68 +40,45 @@ var/global/datum/repository/crew/crew_repository = new()
if(H.w_uniform != C)
continue
var/list/crewmemberData = list("dead"=0, "area"="", "x"=-1, "y"=-1, "z"=-1, "level"="", "ref" = "\ref[H]")
var/list/crewmemberData = list("area"=null, "x"=null, "y"=null, "z"=null, "level"=null, "ref" = "\ref[H]")
crewmemberData["sensor_type"] = C.sensor_mode
crewmemberData["stype"] = C.sensor_mode
crewmemberData["name"] = H.get_authentification_name(if_no_id="Unknown")
crewmemberData["rank"] = H.get_authentification_rank(if_no_id="Unknown", if_no_job="No Job")
crewmemberData["assignment"] = H.get_assignment(if_no_id="Unknown", if_no_job="No Job")
crewmemberData["ass"] = H.get_assignment(if_no_id="Unknown", if_no_job="No Job")
if(C.sensor_mode >= SUIT_SENSOR_BINARY)
crewmemberData["dead"] = H.stat > UNCONSCIOUS
if(C.sensor_mode >= SUIT_SENSOR_VITAL)
crewmemberData["pulse"] = "N/A"
crewmemberData["pulse_span"] = "neutral"
crewmemberData["true_pulse"] = -1
crewmemberData["tpulse"] = -1
if(!H.isSynthetic() && H.should_have_organ(BP_HEART))
var/obj/item/organ/internal/heart/O = H.internal_organs_by_name[BP_HEART]
if (!O || !BP_IS_ROBOTIC(O)) // Don't make medical freak out over prosthetic hearts
crewmemberData["true_pulse"] = H.pulse()
crewmemberData["tpulse"] = H.pulse()
crewmemberData["pulse"] = H.get_pulse(GETPULSE_TOOL)
switch(crewmemberData["true_pulse"])
if(PULSE_NONE)
crewmemberData["pulse_span"] = "bad"
if(PULSE_SLOW)
crewmemberData["pulse_span"] = "average"
if(PULSE_NORM)
crewmemberData["pulse_span"] = "good"
if(PULSE_FAST)
crewmemberData["pulse_span"] = "highlight"
if(PULSE_2FAST)
crewmemberData["pulse_span"] = "average"
if(PULSE_THREADY)
crewmemberData["pulse_span"] = "bad"
if(C.sensor_mode >= SUIT_SENSOR_VITAL)
crewmemberData["pressure"] = "N/A"
crewmemberData["true_oxygenation"] = -1
crewmemberData["oxygenation"] = ""
crewmemberData["oxygenation_span"] = ""
crewmemberData["toxyg"] = -1
crewmemberData["oxyg"] = OXYGENATION_STATE_UNDEFINED
if(!H.isSynthetic() && H.should_have_organ(BP_HEART))
crewmemberData["pressure"] = H.get_blood_pressure()
crewmemberData["true_oxygenation"] = H.get_blood_oxygenation()
switch (crewmemberData["true_oxygenation"])
crewmemberData["toxyg"] = H.get_blood_oxygenation()
switch (crewmemberData["toxyg"])
if(105 to INFINITY)
crewmemberData["oxygenation"] = "increased"
crewmemberData["oxygenation_span"] = "highlight"
crewmemberData["oxyg"] = OXYGENATION_STATE_HIGH
if(BLOOD_VOLUME_SAFE to 105)
crewmemberData["oxygenation"] = "normal"
crewmemberData["oxygenation_span"] = "good"
crewmemberData["oxyg"] = OXYGENATION_STATE_NORMAL
if(BLOOD_VOLUME_OKAY to BLOOD_VOLUME_SAFE)
crewmemberData["oxygenation"] = "low"
crewmemberData["oxygenation_span"] = "average"
crewmemberData["oxyg"] = OXYGENATION_STATE_LOW
if(BLOOD_VOLUME_BAD to BLOOD_VOLUME_OKAY)
crewmemberData["oxygenation"] = "very low"
crewmemberData["oxygenation_span"] = "bad"
crewmemberData["oxyg"] = OXYGENATION_STATE_VERY_LOW
if(-(INFINITY) to BLOOD_VOLUME_BAD)
crewmemberData["oxygenation"] = "extremely low"
crewmemberData["oxygenation_span"] = "bad"
crewmemberData["oxyg"] = OXYGENATION_STATE_NONE
crewmemberData["bodytemp"] = H.bodytemperature - T0C
if(C.sensor_mode >= SUIT_SENSOR_TRACKING)
var/area/A = get_area(H)
crewmemberData["area"] = sanitize(A.name)
crewmemberData["area"] = A.name
crewmemberData["x"] = pos.x
crewmemberData["y"] = pos.y
crewmemberData["z"] = pos.z
@@ -114,4 +100,10 @@ var/global/datum/repository/crew/crew_repository = new()
tracked |= C
return tracked
#undef ZERO_WIDTH_SPACE
#undef ZERO_WIDTH_SPACE
#undef OXYGENATION_STATE_HIGH
#undef OXYGENATION_STATE_NORMAL
#undef OXYGENATION_STATE_LOW
#undef OXYGENATION_STATE_VERY_LOW
#undef OXYGENATION_STATE_NONE
#undef OXYGENATION_STATE_UNDEFINED