diff --git a/Content.Client/Lobby/LobbyState.cs b/Content.Client/Lobby/LobbyState.cs index 2e3ba74631f..c0b03d116da 100644 --- a/Content.Client/Lobby/LobbyState.cs +++ b/Content.Client/Lobby/LobbyState.cs @@ -1,5 +1,6 @@ // SPDX-License-Identifier: AGPL-3.0-or-later +using Content.Client._Orion.ReadyManifest; using Content.Client._RMC14.LinkAccount; using Content.Client.Audio; using Content.Client.GameTicking.Managers; @@ -41,6 +42,7 @@ public sealed class LobbyState : Robust.Client.State.State private ISawmill _sawmill = default!; // Goobstation private ClientGameTicker _gameTicker = default!; private ContentAudioSystem _contentAudioSystem = default!; + private ReadyManifestSystem _readyManifest = default!; // Orion protected override Type? LinkedScreenType { get; } = typeof(LobbyGui); public LobbyGui? Lobby; @@ -62,6 +64,7 @@ protected override void Startup() _contentAudioSystem = _entityManager.System(); _contentAudioSystem.LobbySoundtrackChanged += UpdateLobbySoundtrackInfo; _sawmill = Logger.GetSawmill("lobby"); + _readyManifest = _entityManager.EntitySysManager.GetEntitySystem(); // Orion chatController.SetMainChat(true); @@ -83,6 +86,7 @@ protected override void Startup() Lobby.CharacterPreview.CharacterSetupButton.OnPressed += OnSetupPressed; Lobby.CharacterPreview.PatronPerks.OnPressed += OnPatronPerksPressed; Lobby.DiscordLinkButton.OnPressed += OnDiscordLinkPressed; // Arcane + Lobby.ManifestButton.OnPressed += OnManifestPressed; // Orion Lobby.ReadyButton.OnPressed += OnReadyPressed; Lobby.ReadyButton.OnToggled += OnReadyToggled; @@ -110,6 +114,7 @@ protected override void Shutdown() Lobby!.CharacterPreview.CharacterSetupButton.OnPressed -= OnSetupPressed; Lobby.CharacterPreview.PatronPerks.OnPressed -= OnPatronPerksPressed; Lobby.DiscordLinkButton.OnPressed -= OnDiscordLinkPressed; // Arcane + Lobby!.ManifestButton.OnPressed -= OnManifestPressed; // Orion Lobby!.ReadyButton.OnPressed -= OnReadyPressed; Lobby!.ReadyButton.OnToggled -= OnReadyToggled; @@ -159,6 +164,13 @@ private void OnReadyToggled(BaseButton.ButtonToggledEventArgs args) SetReady(args.Pressed); } + // Orion-Start + private void OnManifestPressed(BaseButton.ButtonEventArgs args) + { + _readyManifest.RequestReadyManifest(); + } + // Orion-End + public override void FrameUpdate(FrameEventArgs e) { if (_gameTicker.IsGameStarted) @@ -224,6 +236,7 @@ private void UpdateLobbyUi() Lobby!.ReadyButton.ToggleMode = false; Lobby!.ReadyButton.Pressed = false; Lobby!.ObserveButton.Disabled = false; + Lobby!.ManifestButton.Disabled = true; // Orion } else { @@ -233,6 +246,7 @@ private void UpdateLobbyUi() Lobby!.ReadyButton.ToggleMode = true; Lobby!.ReadyButton.Disabled = false; Lobby!.ObserveButton.Disabled = true; + Lobby!.ManifestButton.Disabled = false; // Orion } if (_gameTicker.ServerInfoBlob != null) diff --git a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml index 011d6167da5..fa72d737bb9 100644 --- a/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml +++ b/Content.Client/UserInterface/Screens/SeparatedChatGameScreen.xaml @@ -40,7 +40,12 @@ SPDX-License-Identifier: AGPL-3.0-or-later - + + + + + + diff --git a/Content.Client/_Arcane/StyleSheets/Sheetlets/DepartmentButtonSheetlet.cs b/Content.Client/_Arcane/StyleSheets/Sheetlets/DepartmentButtonSheetlet.cs new file mode 100644 index 00000000000..1beb4c4b9cd --- /dev/null +++ b/Content.Client/_Arcane/StyleSheets/Sheetlets/DepartmentButtonSheetlet.cs @@ -0,0 +1,88 @@ +// SPDX-License-Identifier: AGPL-3.0-or-later + +using Robust.Client.Graphics; +using Robust.Client.UserInterface; +using Robust.Client.UserInterface.Controls; +using static Content.Client.Stylesheets.StylesheetHelpers; + +namespace Content.Client.Stylesheets.Sheetlets; + +/// +/// Department-colored buttons used by the ghost teleport menu and access level controls. +/// The style class name is driven by . +/// +[CommonSheetlet] +public sealed class DepartmentButtonSheetlet : Sheetlet where T : PalettedStylesheet +{ + private static readonly Color CentralCommand = Color.FromHex("#185e1f"); + private static readonly Color Command = Color.FromHex("#1d4776"); + private static readonly Color Security = Color.FromHex("#991d1d"); + private static readonly Color Medical = Color.FromHex("#3e86ad"); + private static readonly Color Engineering = Color.FromHex("#998011"); + private static readonly Color Cargo = Color.FromHex("#A46106"); + private static readonly Color Science = Color.FromHex("#84287a"); + private static readonly Color Silicon = Color.FromHex("#08766b"); + private static readonly Color Civilian = Color.FromHex("#508264"); + private static readonly Color Justice = Color.FromHex("#9f2342"); + private static readonly Color Legal = Color.FromHex("#c22b51"); + private static readonly Color Specific = Color.FromHex("#767676"); + private static readonly Color Antagonist = Color.FromHex("#6f3a3a"); + + public override StyleRule[] GetRules(T sheet, object config) + { + return + [ + // CentralCommand + E