SignalTimerBoundUserInterface.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. using Content.Shared.MachineLinking;
  2. using Robust.Client.GameObjects;
  3. using Robust.Client.UserInterface;
  4. using Robust.Shared.Timing;
  5. namespace Content.Client.MachineLinking.UI;
  6. public sealed class SignalTimerBoundUserInterface : BoundUserInterface
  7. {
  8. [ViewVariables]
  9. private SignalTimerWindow? _window;
  10. public SignalTimerBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
  11. {
  12. }
  13. protected override void Open()
  14. {
  15. base.Open();
  16. _window = this.CreateWindow<SignalTimerWindow>();
  17. _window.OnStartTimer += StartTimer;
  18. _window.OnCurrentTextChanged += OnTextChanged;
  19. _window.OnCurrentDelayMinutesChanged += OnDelayChanged;
  20. _window.OnCurrentDelaySecondsChanged += OnDelayChanged;
  21. }
  22. public void StartTimer()
  23. {
  24. SendMessage(new SignalTimerStartMessage());
  25. }
  26. private void OnTextChanged(string newText)
  27. {
  28. SendMessage(new SignalTimerTextChangedMessage(newText));
  29. }
  30. private void OnDelayChanged(string newDelay)
  31. {
  32. if (_window == null)
  33. return;
  34. SendMessage(new SignalTimerDelayChangedMessage(_window.GetDelay()));
  35. }
  36. /// <summary>
  37. /// Update the UI state based on server-sent info
  38. /// </summary>
  39. /// <param name="state"></param>
  40. protected override void UpdateState(BoundUserInterfaceState state)
  41. {
  42. base.UpdateState(state);
  43. if (_window == null || state is not SignalTimerBoundUserInterfaceState cast)
  44. return;
  45. _window.SetCurrentText(cast.CurrentText);
  46. _window.SetCurrentDelayMinutes(cast.CurrentDelayMinutes);
  47. _window.SetCurrentDelaySeconds(cast.CurrentDelaySeconds);
  48. _window.SetShowText(cast.ShowText);
  49. _window.SetTriggerTime(cast.TriggerTime);
  50. _window.SetTimerStarted(cast.TimerStarted);
  51. _window.SetHasAccess(cast.HasAccess);
  52. }
  53. }