SharedGeigerSystem.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. using Content.Shared.Examine;
  2. using Content.Shared.Radiation.Components;
  3. namespace Content.Shared.Radiation.Systems;
  4. public abstract class SharedGeigerSystem : EntitySystem
  5. {
  6. public override void Initialize()
  7. {
  8. base.Initialize();
  9. SubscribeLocalEvent<GeigerComponent, ExaminedEvent>(OnExamine);
  10. }
  11. private void OnExamine(EntityUid uid, GeigerComponent component, ExaminedEvent args)
  12. {
  13. if (!component.ShowExamine || !component.IsEnabled || !args.IsInDetailsRange)
  14. return;
  15. var currentRads = component.CurrentRadiation;
  16. var rads = currentRads.ToString("N1");
  17. var color = LevelToColor(component.DangerLevel);
  18. var msg = Loc.GetString("geiger-component-examine",
  19. ("rads", rads), ("color", color));
  20. args.PushMarkup(msg);
  21. }
  22. public static Color LevelToColor(GeigerDangerLevel level)
  23. {
  24. switch (level)
  25. {
  26. case GeigerDangerLevel.None:
  27. return Color.Green;
  28. case GeigerDangerLevel.Low:
  29. return Color.Yellow;
  30. case GeigerDangerLevel.Med:
  31. return Color.DarkOrange;
  32. case GeigerDangerLevel.High:
  33. case GeigerDangerLevel.Extreme:
  34. return Color.Red;
  35. default:
  36. return Color.White;
  37. }
  38. }
  39. }