]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add a command to hide replay UI (#19956)
authorShadowCommander <10494922+ShadowCommander@users.noreply.github.com>
Wed, 11 Oct 2023 03:43:48 +0000 (20:43 -0700)
committerGitHub <noreply@github.com>
Wed, 11 Oct 2023 03:43:48 +0000 (20:43 -0700)
Content.Client/Ghost/GhostToggleSelfVisibility.cs [new file with mode: 0644]
Content.Client/Replay/ContentReplayPlaybackManager.cs
Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs [new file with mode: 0644]
Content.Client/Replay/UI/ReplaySpectateEntityState.cs

diff --git a/Content.Client/Ghost/GhostToggleSelfVisibility.cs b/Content.Client/Ghost/GhostToggleSelfVisibility.cs
new file mode 100644 (file)
index 0000000..321bd9d
--- /dev/null
@@ -0,0 +1,30 @@
+using Content.Shared.Ghost;
+using Robust.Client.GameObjects;
+using Robust.Shared.Console;
+
+namespace Content.Client.Ghost;
+
+public sealed class GhostToggleSelfVisibility : IConsoleCommand
+{
+    public string Command => "toggleselfghost";
+    public string Description => "Toggles seeing your own ghost.";
+    public string Help => "toggleselfghost";
+    public void Execute(IConsoleShell shell, string argStr, string[] args)
+    {
+        var attachedEntity = shell.Player?.AttachedEntity;
+        if (!attachedEntity.HasValue)
+            return;
+
+        var entityManager = IoCManager.Resolve<IEntityManager>();
+        if (!entityManager.HasComponent<GhostComponent>(attachedEntity))
+        {
+            shell.WriteError("Entity must be a ghost.");
+            return;
+        }
+
+        if (!entityManager.TryGetComponent(attachedEntity, out SpriteComponent? spriteComponent))
+            return;
+
+        spriteComponent.Visible = !spriteComponent.Visible;
+    }
+}
index a96752383a5648ce2d5f8f3efd2900f3598790e7..cbb511725523f74de1ac6f935e17cfbce2029263 100644 (file)
@@ -46,6 +46,8 @@ public sealed class ContentReplayPlaybackManager
     /// </summary>
     public Type? DefaultState;
 
+    public bool IsScreenshotMode = false;
+
     private bool _initialized;
 
     public void Initialize()
diff --git a/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs b/Content.Client/Replay/ReplayToggleScreenshotModeCommand.cs
new file mode 100644 (file)
index 0000000..40b1a13
--- /dev/null
@@ -0,0 +1,35 @@
+using Content.Client.UserInterface.Systems.Chat;
+using Content.Shared.Chat;
+using Robust.Client.Replays.Commands;
+using Robust.Client.Replays.UI;
+using Robust.Client.UserInterface;
+using Robust.Shared.Console;
+
+namespace Content.Client.Replay;
+
+public sealed class ReplayToggleScreenshotModeCommand : BaseReplayCommand
+{
+    [Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!;
+    [Dependency] private readonly ContentReplayPlaybackManager _replayManager = default!;
+
+    public override string Command => "replay_toggle_screenshot_mode";
+
+    public override void Execute(IConsoleShell shell, string argStr, string[] args)
+    {
+        var screen = _userInterfaceManager.ActiveScreen;
+        if (screen == null)
+            return;
+
+        _replayManager.IsScreenshotMode = !_replayManager.IsScreenshotMode;
+
+        var showReplayWidget = _replayManager.IsScreenshotMode;
+        screen.ShowWidget<ReplayControlWidget>(showReplayWidget);
+
+        foreach (var chatBox in _userInterfaceManager.GetUIController<ChatUIController>().Chats)
+        {
+            chatBox.ChatInput.Visible = !showReplayWidget;
+            if (!showReplayWidget)
+                chatBox.ChatInput.ChannelSelector.Select(ChatSelectChannel.Local);
+        }
+    }
+}
index f36c366dae40f8d350a6eee4ab330639c1549aef..c64201bc03609177d4faf0b5f59c18666a905a5f 100644 (file)
@@ -12,6 +12,8 @@ namespace Content.Client.Replay.UI;
 [Virtual]
 public class ReplaySpectateEntityState : GameplayState
 {
+    [Dependency] private readonly ContentReplayPlaybackManager _replayManager = default!;
+
     protected override void Startup()
     {
         base.Startup();
@@ -21,11 +23,13 @@ public class ReplaySpectateEntityState : GameplayState
             return;
 
         screen.ShowWidget<GameTopMenuBar>(false);
-        SetAnchorAndMarginPreset(screen.GetOrAddWidget<ReplayControlWidget>(), LayoutPreset.TopLeft, margin: 10);
+        var replayWidget = screen.GetOrAddWidget<ReplayControlWidget>();
+        SetAnchorAndMarginPreset(replayWidget, LayoutPreset.TopLeft, margin: 10);
+        replayWidget.Visible = !_replayManager.IsScreenshotMode;
 
         foreach (var chatbox in UserInterfaceManager.GetUIController<ChatUIController>().Chats)
         {
-            chatbox.ChatInput.Visible = false;
+            chatbox.ChatInput.Visible = _replayManager.IsScreenshotMode;
         }
     }