Geiger counter (#12082)
This commit is contained in:
44
Content.Shared/Radiation/Systems/SharedGeigerSystem.cs
Normal file
44
Content.Shared/Radiation/Systems/SharedGeigerSystem.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using Content.Shared.Examine;
|
||||
using Content.Shared.Radiation.Components;
|
||||
|
||||
namespace Content.Shared.Radiation.Systems;
|
||||
|
||||
public abstract class SharedGeigerSystem : EntitySystem
|
||||
{
|
||||
public override void Initialize()
|
||||
{
|
||||
base.Initialize();
|
||||
SubscribeLocalEvent<GeigerComponent, ExaminedEvent>(OnExamine);
|
||||
}
|
||||
|
||||
private void OnExamine(EntityUid uid, GeigerComponent component, ExaminedEvent args)
|
||||
{
|
||||
if (!component.ShowExamine || !component.IsEnabled || !args.IsInDetailsRange)
|
||||
return;
|
||||
|
||||
var currentRads = component.CurrentRadiation;
|
||||
var rads = currentRads.ToString("N1");
|
||||
var color = LevelToColor(component.DangerLevel);
|
||||
var msg = Loc.GetString("geiger-component-examine",
|
||||
("rads", rads), ("color", color));
|
||||
args.PushMarkup(msg);
|
||||
}
|
||||
|
||||
public static Color LevelToColor(GeigerDangerLevel level)
|
||||
{
|
||||
switch (level)
|
||||
{
|
||||
case GeigerDangerLevel.None:
|
||||
return Color.Green;
|
||||
case GeigerDangerLevel.Low:
|
||||
return Color.Yellow;
|
||||
case GeigerDangerLevel.Med:
|
||||
return Color.DarkOrange;
|
||||
case GeigerDangerLevel.High:
|
||||
case GeigerDangerLevel.Extreme:
|
||||
return Color.Red;
|
||||
default:
|
||||
return Color.White;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user