diff --git a/Content.Client/CriminalRecords/CrimeHistoryWindow.xaml.cs b/Content.Client/CriminalRecords/CrimeHistoryWindow.xaml.cs index bccf501d9c..1c6e83a359 100644 --- a/Content.Client/CriminalRecords/CrimeHistoryWindow.xaml.cs +++ b/Content.Client/CriminalRecords/CrimeHistoryWindow.xaml.cs @@ -15,13 +15,16 @@ public sealed partial class CrimeHistoryWindow : FancyWindow public Action? OnAddHistory; public Action? OnDeleteHistory; + private uint _maxLength; private uint? _index; private DialogWindow? _dialog; - public CrimeHistoryWindow() + public CrimeHistoryWindow(uint maxLength) { RobustXamlLoader.Load(this); + _maxLength = maxLength; + OnClose += () => { _dialog?.Close(); @@ -47,8 +50,7 @@ public sealed partial class CrimeHistoryWindow : FancyWindow _dialog.OnConfirmed += responses => { var line = responses[field]; - // TODO: whenever the console is moved to shared unhardcode this - if (line.Length < 1 || line.Length > 256) + if (line.Length < 1 || line.Length > _maxLength) return; OnAddHistory?.Invoke(line); diff --git a/Content.Client/CriminalRecords/CriminalRecordsConsoleBoundUserInterface.cs b/Content.Client/CriminalRecords/CriminalRecordsConsoleBoundUserInterface.cs index f6c9080a2d..88b9c90c2f 100644 --- a/Content.Client/CriminalRecords/CriminalRecordsConsoleBoundUserInterface.cs +++ b/Content.Client/CriminalRecords/CriminalRecordsConsoleBoundUserInterface.cs @@ -1,5 +1,6 @@ using Content.Shared.Access.Systems; using Content.Shared.CriminalRecords; +using Content.Shared.CriminalRecords.Components; using Content.Shared.Security; using Content.Shared.StationRecords; using Robust.Client.Player; @@ -27,7 +28,9 @@ public sealed class CriminalRecordsConsoleBoundUserInterface : BoundUserInterfac { base.Open(); - _window = new(Owner, _playerManager, _proto, _random, _accessReader); + var comp = EntMan.GetComponent(Owner); + + _window = new(Owner, comp.MaxStringLength, _playerManager, _proto, _random, _accessReader); _window.OnKeySelected += key => SendMessage(new SelectStationRecord(key)); _window.OnFiltersChanged += (type, filterValue) => @@ -40,7 +43,7 @@ public sealed class CriminalRecordsConsoleBoundUserInterface : BoundUserInterfac _window.OnHistoryClosed += () => _historyWindow?.Close(); _window.OnClose += Close; - _historyWindow = new(); + _historyWindow = new(comp.MaxStringLength); _historyWindow.OnAddHistory += line => SendMessage(new CriminalRecordAddHistory(line)); _historyWindow.OnDeleteHistory += index => SendMessage(new CriminalRecordDeleteHistory(index)); diff --git a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs index f5c631ea0b..61b5c38331 100644 --- a/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs +++ b/Content.Client/CriminalRecords/CriminalRecordsConsoleWindow.xaml.cs @@ -35,6 +35,7 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow public Action? OnHistoryClosed; public Action? OnDialogConfirmed; + private uint _maxLength; private bool _isPopulating; private bool _access; private uint? _selectedKey; @@ -44,7 +45,7 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow private StationRecordFilterType _currentFilterType; - public CriminalRecordsConsoleWindow(EntityUid console, IPlayerManager playerManager, IPrototypeManager prototypeManager, IRobustRandom robustRandom, AccessReaderSystem accessReader) + public CriminalRecordsConsoleWindow(EntityUid console, uint maxLength, IPlayerManager playerManager, IPrototypeManager prototypeManager, IRobustRandom robustRandom, AccessReaderSystem accessReader) { RobustXamlLoader.Load(this); @@ -54,6 +55,7 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow _random = robustRandom; _accessReader = accessReader; + _maxLength = maxLength; _currentFilterType = StationRecordFilterType.Name; OpenCentered(); @@ -246,8 +248,7 @@ public sealed partial class CriminalRecordsConsoleWindow : FancyWindow _reasonDialog.OnConfirmed += responses => { var reason = responses[field]; - // TODO: same as history unhardcode - if (reason.Length < 1 || reason.Length > 256) + if (reason.Length < 1 || reason.Length > _maxLength) return; OnDialogConfirmed?.Invoke(SecurityStatus.Wanted, reason); diff --git a/Content.Client/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Client/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs new file mode 100644 index 0000000000..2a34376f6a --- /dev/null +++ b/Content.Client/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -0,0 +1,7 @@ +using Content.Shared.CriminalRecords.Systems; + +namespace Content.Client.CriminalRecords.Systems; + +public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleSystem +{ +} diff --git a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs index f0a4f96152..84f8ffc2e5 100644 --- a/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs +++ b/Content.Server/CriminalRecords/Systems/CriminalRecordsConsoleSystem.cs @@ -1,4 +1,3 @@ -using Content.Server.CriminalRecords.Components; using Content.Server.Popups; using Content.Server.Radio.EntitySystems; using Content.Server.Station.Systems; @@ -6,6 +5,8 @@ using Content.Server.StationRecords; using Content.Server.StationRecords.Systems; using Content.Shared.Access.Systems; using Content.Shared.CriminalRecords; +using Content.Shared.CriminalRecords.Components; +using Content.Shared.CriminalRecords.Systems; using Content.Shared.Security; using Content.Shared.StationRecords; using Robust.Server.GameObjects; @@ -14,7 +15,10 @@ using System.Diagnostics.CodeAnalysis; namespace Content.Server.CriminalRecords.Systems; -public sealed class CriminalRecordsConsoleSystem : EntitySystem +/// +/// Handles all UI for criminal records console +/// +public sealed class CriminalRecordsConsoleSystem : SharedCriminalRecordsConsoleSystem { [Dependency] private readonly AccessReaderSystem _access = default!; [Dependency] private readonly CriminalRecordsSystem _criminalRecords = default!; diff --git a/Content.Server/CriminalRecords/Components/CriminalRecordsConsoleComponent.cs b/Content.Shared/CriminalRecords/Components/CriminalRecordsConsoleComponent.cs similarity index 90% rename from Content.Server/CriminalRecords/Components/CriminalRecordsConsoleComponent.cs rename to Content.Shared/CriminalRecords/Components/CriminalRecordsConsoleComponent.cs index de9ada8f8c..70e927e3cb 100644 --- a/Content.Server/CriminalRecords/Components/CriminalRecordsConsoleComponent.cs +++ b/Content.Shared/CriminalRecords/Components/CriminalRecordsConsoleComponent.cs @@ -1,15 +1,15 @@ -using Content.Server.CriminalRecords.Systems; +using Content.Shared.CriminalRecords.Systems; using Content.Shared.Radio; using Content.Shared.StationRecords; using Robust.Shared.Prototypes; -namespace Content.Server.CriminalRecords.Components; +namespace Content.Shared.CriminalRecords.Components; /// /// A component for Criminal Record Console storing an active station record key and a currently applied filter /// [RegisterComponent] -[Access(typeof(CriminalRecordsConsoleSystem))] +[Access(typeof(SharedCriminalRecordsConsoleSystem))] public sealed partial class CriminalRecordsConsoleComponent : Component { /// diff --git a/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs new file mode 100644 index 0000000000..f9fc67c896 --- /dev/null +++ b/Content.Shared/CriminalRecords/Systems/SharedCriminalRecordsConsoleSystem.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.CriminalRecords.Systems; + +/// +/// Nothing is predicted just exists for access. +/// +public abstract class SharedCriminalRecordsConsoleSystem : EntitySystem +{ +}