1
0

GeigerItemControl.cs 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. using Content.Client.Message;
  2. using Content.Client.Stylesheets;
  3. using Content.Shared.Radiation.Components;
  4. using Content.Shared.Radiation.Systems;
  5. using Robust.Client.UserInterface;
  6. using Robust.Client.UserInterface.Controls;
  7. using Robust.Shared.Timing;
  8. namespace Content.Client.Radiation.UI;
  9. public sealed class GeigerItemControl : Control
  10. {
  11. private readonly GeigerComponent _component;
  12. private readonly RichTextLabel _label;
  13. public GeigerItemControl(GeigerComponent component)
  14. {
  15. _component = component;
  16. _label = new RichTextLabel { StyleClasses = { StyleNano.StyleClassItemStatus } };
  17. AddChild(_label);
  18. Update();
  19. }
  20. protected override void FrameUpdate(FrameEventArgs args)
  21. {
  22. base.FrameUpdate(args);
  23. if (!_component.UiUpdateNeeded)
  24. return;
  25. Update();
  26. }
  27. private void Update()
  28. {
  29. string msg;
  30. if (_component.IsEnabled)
  31. {
  32. var color = SharedGeigerSystem.LevelToColor(_component.DangerLevel);
  33. var currentRads = _component.CurrentRadiation;
  34. var rads = currentRads.ToString("N1");
  35. msg = Loc.GetString("geiger-item-control-status",
  36. ("rads", rads), ("color", color));
  37. }
  38. else
  39. {
  40. msg = Loc.GetString("geiger-item-control-disabled");
  41. }
  42. _label.SetMarkup(msg);
  43. _component.UiUpdateNeeded = false;
  44. }
  45. }