ReplaySpectateEntityState.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using Content.Client.Gameplay;
  2. using Content.Client.UserInterface.Systems.Chat;
  3. using Content.Client.UserInterface.Systems.MenuBar.Widgets;
  4. using Robust.Client.Replays.UI;
  5. using static Robust.Client.UserInterface.Controls.LayoutContainer;
  6. namespace Content.Client.Replay.UI;
  7. /// <summary>
  8. /// Gameplay state when observing/spectating an entity during a replay.
  9. /// </summary>
  10. [Virtual]
  11. public class ReplaySpectateEntityState : GameplayState
  12. {
  13. [Dependency] private readonly ContentReplayPlaybackManager _replayManager = default!;
  14. protected override void Startup()
  15. {
  16. base.Startup();
  17. var screen = UserInterfaceManager.ActiveScreen;
  18. if (screen == null)
  19. return;
  20. screen.ShowWidget<GameTopMenuBar>(false);
  21. var replayWidget = screen.GetOrAddWidget<ReplayControlWidget>();
  22. SetAnchorAndMarginPreset(replayWidget, LayoutPreset.TopLeft, margin: 10);
  23. replayWidget.Visible = !_replayManager.IsScreenshotMode;
  24. foreach (var chatbox in UserInterfaceManager.GetUIController<ChatUIController>().Chats)
  25. {
  26. chatbox.ChatInput.Visible = _replayManager.IsScreenshotMode;
  27. }
  28. }
  29. protected override void Shutdown()
  30. {
  31. var screen = UserInterfaceManager.ActiveScreen;
  32. if (screen != null)
  33. {
  34. screen.RemoveWidget<ReplayControlWidget>();
  35. screen.ShowWidget<GameTopMenuBar>(true);
  36. }
  37. foreach (var chatbox in UserInterfaceManager.GetUIController<ChatUIController>().Chats)
  38. {
  39. chatbox.ChatInput.Visible = true;
  40. }
  41. base.Shutdown();
  42. }
  43. }