NewsReaderUi.cs 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Content.Client.UserInterface.Fragments;
  2. using Content.Shared.CartridgeLoader.Cartridges;
  3. using Content.Shared.CartridgeLoader;
  4. using Robust.Client.UserInterface;
  5. namespace Content.Client.CartridgeLoader.Cartridges;
  6. public sealed partial class NewsReaderUi : UIFragment
  7. {
  8. private NewsReaderUiFragment? _fragment;
  9. public override Control GetUIFragmentRoot()
  10. {
  11. return _fragment!;
  12. }
  13. public override void Setup(BoundUserInterface userInterface, EntityUid? fragmentOwner)
  14. {
  15. _fragment = new NewsReaderUiFragment();
  16. _fragment.OnNextButtonPressed += () =>
  17. {
  18. SendNewsReaderMessage(NewsReaderUiAction.Next, userInterface);
  19. };
  20. _fragment.OnPrevButtonPressed += () =>
  21. {
  22. SendNewsReaderMessage(NewsReaderUiAction.Prev, userInterface);
  23. };
  24. _fragment.OnNotificationSwithPressed += () =>
  25. {
  26. SendNewsReaderMessage(NewsReaderUiAction.NotificationSwitch, userInterface);
  27. };
  28. }
  29. public override void UpdateState(BoundUserInterfaceState state)
  30. {
  31. switch (state)
  32. {
  33. case NewsReaderBoundUserInterfaceState cast:
  34. _fragment?.UpdateState(cast.Article, cast.TargetNum, cast.TotalNum, cast.NotificationOn);
  35. break;
  36. case NewsReaderEmptyBoundUserInterfaceState empty:
  37. _fragment?.UpdateEmptyState(empty.NotificationOn);
  38. break;
  39. }
  40. }
  41. private void SendNewsReaderMessage(NewsReaderUiAction action, BoundUserInterface userInterface)
  42. {
  43. var newsMessage = new NewsReaderUiMessageEvent(action);
  44. var message = new CartridgeUiMessage(newsMessage);
  45. userInterface.SendMessage(message);
  46. }
  47. }