diff --git a/Content.Client/CartridgeLoader/Cartridges/NewsReadUi.cs b/Content.Client/CartridgeLoader/Cartridges/NewsReadUi.cs new file mode 100644 index 0000000000..ce240e53a0 --- /dev/null +++ b/Content.Client/CartridgeLoader/Cartridges/NewsReadUi.cs @@ -0,0 +1,50 @@ +using Content.Client.UserInterface.Fragments; +using Content.Shared.CartridgeLoader.Cartridges; +using Content.Shared.CartridgeLoader; +using Robust.Client.GameObjects; +using Robust.Client.UserInterface; + +namespace Content.Client.CartridgeLoader.Cartridges; + +public sealed class NewsReadUi : UIFragment +{ + private NewsReadUiFragment? _fragment; + + public override Control GetUIFragmentRoot() + { + return _fragment!; + } + + public override void Setup(BoundUserInterface userInterface, EntityUid? fragmentOwner) + { + _fragment = new NewsReadUiFragment(); + + _fragment.OnNextButtonPressed += () => + { + SendNewsReadMessage(NewsReadUiAction.Next, userInterface); + }; + _fragment.OnPrevButtonPressed += () => + { + SendNewsReadMessage(NewsReadUiAction.Prev, userInterface); + }; + _fragment.OnNotificationSwithPressed += () => + { + SendNewsReadMessage(NewsReadUiAction.NotificationSwith, userInterface); + }; + } + + public override void UpdateState(BoundUserInterfaceState state) + { + if (state is NewsReadBoundUserInterfaceState cast) + _fragment?.UpdateState(cast.Article, cast.TargetNum, cast.TotalNum, cast.NotificationOn); + else if (state is NewsReadEmptyBoundUserInterfaceState empty) + _fragment?.UpdateEmptyState(empty.NotificationOn); + } + + private void SendNewsReadMessage(NewsReadUiAction action, BoundUserInterface userInterface) + { + var newsMessage = new NewsReadUiMessageEvent(action); + var message = new CartridgeUiMessage(newsMessage); + userInterface.SendMessage(message); + } +} diff --git a/Content.Client/CartridgeLoader/Cartridges/NewsReadUiFragment.xaml b/Content.Client/CartridgeLoader/Cartridges/NewsReadUiFragment.xaml new file mode 100644 index 0000000000..7431713ea8 --- /dev/null +++ b/Content.Client/CartridgeLoader/Cartridges/NewsReadUiFragment.xaml @@ -0,0 +1,54 @@ + + + +