35 lines
1.2 KiB
C#
35 lines
1.2 KiB
C#
using Content.Shared._Offbrand.Wounds;
|
|
using Content.Shared.Damage;
|
|
using Content.Shared.FixedPoint;
|
|
using Content.Shared.MedicalScanner;
|
|
using Robust.Client.AutoGenerated;
|
|
using Robust.Client.UserInterface.Controls;
|
|
using Robust.Client.UserInterface.XAML;
|
|
using Robust.Client.UserInterface;
|
|
|
|
namespace Content.Client.HealthAnalyzer.UI.Tooltips;
|
|
|
|
[GenerateTypedNameReferences]
|
|
public sealed partial class BloodOxygenationTooltip : PanelContainer
|
|
{
|
|
public BloodOxygenationTooltip()
|
|
{
|
|
RobustXamlLoader.Load(this);
|
|
}
|
|
|
|
public void Update(HealthAnalyzerScannedUserMessage msg, Entity<DamageableComponent, HeartrateComponent?> ent)
|
|
{
|
|
if (msg.WoundableData is not { } woundable)
|
|
return;
|
|
|
|
if (ent.Comp2?.AsphyxiationDamage is not { } damageType)
|
|
return;
|
|
|
|
var asphyxiation = FixedPoint2.Zero;
|
|
ent.Comp1.Damage.DamageDict.TryGetValue(damageType, out asphyxiation);
|
|
var (systolic, diastolic) = woundable.BloodPressure;
|
|
|
|
Label.Text = Loc.GetString("health-analyzer-blood-saturation-tooltip", ("rating", woundable.BloodOxygenationRating), ("systolic", systolic), ("diastolic", diastolic), ("asphyxiation", asphyxiation));
|
|
}
|
|
}
|