]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
NewsSystem fixes (#23969)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Fri, 12 Jan 2024 08:04:55 +0000 (19:04 +1100)
committerGitHub <noreply@github.com>
Fri, 12 Jan 2024 08:04:55 +0000 (01:04 -0700)
Content.Client/MassMedia/NewsSystem.cs [new file with mode: 0644]
Content.Client/MassMedia/Ui/NewsWriteBoundUserInterface.cs
Content.Server/MassMedia/Systems/NewsSystem.cs
Content.Shared/MassMedia/Systems/SharedNewsSystem.cs

diff --git a/Content.Client/MassMedia/NewsSystem.cs b/Content.Client/MassMedia/NewsSystem.cs
new file mode 100644 (file)
index 0000000..59c5197
--- /dev/null
@@ -0,0 +1,8 @@
+using Content.Shared.MassMedia.Systems;
+
+namespace Content.Client.MassMedia;
+
+public sealed class NewsSystem : SharedNewsSystem
+{
+
+}
index 975dfa3f8189cf3802ec85daef03d91ed9f179a4..ecd0aeccd26a212707fee177b31aca76009ff925 100644 (file)
@@ -1,9 +1,6 @@
-using Robust.Shared.Timing;
 using JetBrains.Annotations;
-using Robust.Client.GameObjects;
-using Content.Shared.MassMedia.Systems;
 using Content.Shared.MassMedia.Components;
-using Content.Client.GameTicking.Managers;
+using Content.Shared.MassMedia.Systems;
 using Robust.Shared.Utility;
 
 namespace Content.Client.MassMedia.Ui
@@ -14,16 +11,11 @@ namespace Content.Client.MassMedia.Ui
         [ViewVariables]
         private NewsWriteMenu? _menu;
 
-        [Dependency] private readonly IEntitySystemManager _entitySystem = default!;
-        [Dependency] private readonly IGameTiming _gameTiming = default!;
-        private ClientGameTicker? _gameTicker;
-
         [ViewVariables]
         private string _windowName = Loc.GetString("news-read-ui-default-title");
 
         public NewsWriteBoundUserInterface(EntityUid owner, Enum uiKey) : base(owner, uiKey)
         {
-
         }
 
         protected override void Open()
@@ -36,8 +28,6 @@ namespace Content.Client.MassMedia.Ui
             _menu.ShareButtonPressed += OnShareButtonPressed;
             _menu.DeleteButtonPressed += OnDeleteButtonPressed;
 
-            _gameTicker = _entitySystem.GetEntitySystem<ClientGameTicker>();
-
             SendMessage(new NewsWriteArticlesRequestMessage());
         }
 
@@ -67,19 +57,21 @@ namespace Content.Client.MassMedia.Ui
 
             var stringContent = Rope.Collapse(_menu.ContentInput.TextRope);
 
-            if (stringContent == null || stringContent.Length == 0)
+            if (stringContent.Length == 0)
                 return;
 
-            var stringName = _menu.NameInput.Text;
-            var name = (stringName.Length <= 25 ? stringName.Trim() : $"{stringName.Trim().Substring(0, 25)}...");
+            var stringName = _menu.NameInput.Text.Trim();
+            var name = stringName[..(SharedNewsSystem.MaxNameLength)];
+            var content = stringContent[..(SharedNewsSystem.MaxArticleLength)];
             _menu.ContentInput.TextRope = new Rope.Leaf(string.Empty);
             _menu.NameInput.Text = string.Empty;
-            SendMessage(new NewsWriteShareMessage(name, stringContent));
+            SendMessage(new NewsWriteShareMessage(name, content));
         }
 
         private void OnDeleteButtonPressed(int articleNum)
         {
-            if (_menu == null) return;
+            if (_menu == null)
+                return;
 
             SendMessage(new NewsWriteDeleteMessage(articleNum));
         }
index 30de1d21d9182a66da81d9f71ea2291690bedf85..40e2a0911b367d984b10991ee37d20afcd904eb4 100644 (file)
@@ -36,7 +36,7 @@ using Robust.Shared.Timing;
 
 namespace Content.Server.MassMedia.Systems;
 
-public sealed class NewsSystem : EntitySystem
+public sealed class NewsSystem : SharedNewsSystem
 {
     [Dependency] private readonly IGameTiming _timing = default!;
     [Dependency] private readonly UserInterfaceSystem _ui = default!;
@@ -50,6 +50,7 @@ public sealed class NewsSystem : EntitySystem
     [Dependency] private readonly StationRecordsSystem _stationRecords = default!;
 
     // TODO remove this. Dont store data on systems
+    // Honestly NewsSystem just needs someone to rewrite it entirely.
     private readonly List<NewsArticle> _articles = new List<NewsArticle>();
 
     public override void Initialize()
@@ -68,7 +69,7 @@ public sealed class NewsSystem : EntitySystem
 
     private void OnRoundRestart(RoundRestartCleanupEvent ev)
     {
-        _articles?.Clear();
+        _articles.Clear();
     }
 
     public void ToggleUi(EntityUid user, EntityUid deviceEnt, NewsWriteComponent? component)
@@ -133,10 +134,12 @@ public sealed class NewsSystem : EntitySystem
         if (!_accessReader.FindAccessItemsInventory(author, out var items))
             return;
 
-        if (!_accessReader.FindStationRecordKeys(author, out var stationRecordKeys, items))
+        if (!_accessReader.FindStationRecordKeys(author, out _, items))
             return;
 
         string? authorName = null;
+
+        // TODO: There is a dedicated helper for this.
         foreach (var item in items)
         {
             // ID Card
@@ -155,13 +158,15 @@ public sealed class NewsSystem : EntitySystem
             }
         }
 
-        NewsArticle article = new NewsArticle
+        var trimmedName = msg.Name.Trim();
+        var trimmedContent = msg.Content.Trim();
+
+        var article = new NewsArticle
         {
             Author = authorName,
-            Name = (msg.Name.Length <= 25 ? msg.Name.Trim() : $"{msg.Name.Trim().Substring(0, 25)}..."),
-            Content = msg.Content,
+            Name = trimmedName.Length <= MaxNameLength ? trimmedName : $"{trimmedName[..MaxNameLength]}...",
+            Content = trimmedContent.Length <= MaxArticleLength ? trimmedContent : $"{trimmedContent[..MaxArticleLength]}...",
             ShareTime = _ticker.RoundDuration()
-
         };
 
         _audio.PlayPvs(component.ConfirmSound, uid);
index 64bc74229ca49699f160841556ecc5b4c969e81f..057ce9a2edadf4955fc63ed67a001e259d196e52 100644 (file)
@@ -2,6 +2,12 @@ using Robust.Shared.Serialization;
 
 namespace Content.Shared.MassMedia.Systems;
 
+public abstract class SharedNewsSystem : EntitySystem
+{
+    public const int MaxNameLength = 25;
+    public const int MaxArticleLength = 2048;
+}
+
 [Serializable, NetSerializable]
 public struct NewsArticle
 {