From 301fbffcfd35509d01fa2fc2840d9872f43a607c Mon Sep 17 00:00:00 2001 From: Whisper <121047731+QuietlyWhisper@users.noreply.github.com> Date: Tue, 18 Jul 2023 17:13:26 -0400 Subject: [PATCH] adds both blood level and body temp to analyzers and cryo (#16778) * Ports temperature scanning from mining station 14 * Added blood level to analyzer * adds body temp and blood level to health analyzers and cryo * Blood and temperature will show N/A if not available --- .../HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs | 7 +++++++ Content.Server/Medical/CryoPodSystem.cs | 7 ++++++- Content.Server/Medical/HealthAnalyzerSystem.cs | 9 ++++++++- .../MedicalScanner/HealthAnalyzerScannedUserMessage.cs | 8 ++++++-- 4 files changed, 27 insertions(+), 4 deletions(-) diff --git a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs index 243b65960b..d691ad82b3 100644 --- a/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs +++ b/Content.Client/HealthAnalyzer/UI/HealthAnalyzerWindow.xaml.cs @@ -37,6 +37,13 @@ namespace Content.Client.HealthAnalyzer.UI text.Append($"{Loc.GetString("health-analyzer-window-entity-health-text", ("entityName", entityName))}\n"); + + text.Append(String.Format("Temperature: {0}\n", float.IsNaN(msg.Temperature) ? "N/A" : $"{msg.Temperature - 273f:F1} °C")); + + + text.Append(String.Format("Blood Level: {0}\n", float.IsNaN(msg.BloodLevel) ? "N/A" : $"{msg.BloodLevel * 100:F1} %")); + + // Damage text.Append($"\n{Loc.GetString("health-analyzer-window-entity-damage-total-text", ("amount", damageable.TotalDamage))}\n"); diff --git a/Content.Server/Medical/CryoPodSystem.cs b/Content.Server/Medical/CryoPodSystem.cs index 695da624e3..57f1799fad 100644 --- a/Content.Server/Medical/CryoPodSystem.cs +++ b/Content.Server/Medical/CryoPodSystem.cs @@ -31,6 +31,7 @@ using Content.Shared.Tools; using Content.Shared.Verbs; using Robust.Server.GameObjects; using Robust.Shared.Timing; +using Content.Server.Temperature.Components; namespace Content.Server.Medical; @@ -177,10 +178,14 @@ public sealed partial class CryoPodSystem: SharedCryoPodSystem private void OnActivateUI(EntityUid uid, CryoPodComponent cryoPodComponent, AfterActivatableUIOpenEvent args) { + TryComp(cryoPodComponent.BodyContainer.ContainedEntity, out var temp); + TryComp(cryoPodComponent.BodyContainer.ContainedEntity, out var bloodstream); + _userInterfaceSystem.TrySendUiMessage( uid, HealthAnalyzerUiKey.Key, - new HealthAnalyzerScannedUserMessage(cryoPodComponent.BodyContainer.ContainedEntity)); + new HealthAnalyzerScannedUserMessage(cryoPodComponent.BodyContainer.ContainedEntity, + temp != null ? temp.CurrentTemperature : 0, bloodstream != null ? bloodstream.BloodSolution.FillFraction : 0)); } private void OnInteractUsing(EntityUid uid, CryoPodComponent cryoPodComponent, InteractUsingEvent args) diff --git a/Content.Server/Medical/HealthAnalyzerSystem.cs b/Content.Server/Medical/HealthAnalyzerSystem.cs index 76f3cf7329..7e07e4ac97 100644 --- a/Content.Server/Medical/HealthAnalyzerSystem.cs +++ b/Content.Server/Medical/HealthAnalyzerSystem.cs @@ -6,6 +6,8 @@ using Content.Shared.Interaction; using Content.Shared.MedicalScanner; using Content.Shared.Mobs.Components; using Robust.Server.GameObjects; +using Content.Server.Temperature.Components; +using Content.Server.Body.Components; namespace Content.Server.Medical { @@ -68,8 +70,13 @@ namespace Content.Server.Medical if (!HasComp(target)) return; + TryComp(target, out var temp); + TryComp(target, out var bloodstream); + OpenUserInterface(user, healthAnalyzer); - _uiSystem.SendUiMessage(healthAnalyzer.UserInterface, new HealthAnalyzerScannedUserMessage(target)); + + _uiSystem.SendUiMessage(healthAnalyzer.UserInterface, new HealthAnalyzerScannedUserMessage(target, temp != null ? temp.CurrentTemperature : float.NaN, + bloodstream != null ? bloodstream.BloodSolution.FillFraction : float.NaN)); } } } diff --git a/Content.Shared/MedicalScanner/HealthAnalyzerScannedUserMessage.cs b/Content.Shared/MedicalScanner/HealthAnalyzerScannedUserMessage.cs index 1dd00967b8..2691f1b7fc 100644 --- a/Content.Shared/MedicalScanner/HealthAnalyzerScannedUserMessage.cs +++ b/Content.Shared/MedicalScanner/HealthAnalyzerScannedUserMessage.cs @@ -1,4 +1,4 @@ -using Robust.Shared.Serialization; +using Robust.Shared.Serialization; namespace Content.Shared.MedicalScanner; @@ -9,10 +9,14 @@ namespace Content.Shared.MedicalScanner; public sealed class HealthAnalyzerScannedUserMessage : BoundUserInterfaceMessage { public readonly EntityUid? TargetEntity; + public float Temperature; + public float BloodLevel; - public HealthAnalyzerScannedUserMessage(EntityUid? targetEntity) + public HealthAnalyzerScannedUserMessage(EntityUid? targetEntity, float temperature, float bloodLevel) { TargetEntity = targetEntity; + Temperature = temperature; + BloodLevel = bloodLevel; } }