]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Throttle MagicMirror do_afters (#23867)
authormetalgearsloth <31366439+metalgearsloth@users.noreply.github.com>
Thu, 11 Jan 2024 00:08:42 +0000 (11:08 +1100)
committerGitHub <noreply@github.com>
Thu, 11 Jan 2024 00:08:42 +0000 (17:08 -0700)
Doesn't fix the gross network spam but that's for later.

Content.Server/MagicMirror/MagicMirrorComponent.cs
Content.Server/MagicMirror/MagicMirrorSystem.cs

index a9e72f577aa6a36411232fca86ea1ecb4c2b2cde..624a381ca58088a8f3544533c7c6c198eeef2d2b 100644 (file)
@@ -1,3 +1,4 @@
+using Content.Shared.DoAfter;
 using Content.Shared.Humanoid;
 using Robust.Shared.Audio;
 
@@ -9,6 +10,9 @@ namespace Content.Server.MagicMirror;
 [RegisterComponent]
 public sealed partial class MagicMirrorComponent : Component
 {
+    [DataField]
+    public DoAfterId? DoAfter;
+
     /// <summary>
     /// Magic mirror target, used for validating UI messages.
     /// </summary>
index 6b3fe98d7884b30999f4b59078fa5b9847af816a..c2d6f0fda25882a262e8b32892b5e5826a251841 100644 (file)
@@ -78,6 +78,9 @@ public sealed class MagicMirrorSystem : EntitySystem
         if (component.Target is not { } target || message.Session.AttachedEntity is not { } user)
             return;
 
+        _doAfterSystem.Cancel(component.DoAfter);
+        component.DoAfter = null;
+
         var doAfter = new MagicMirrorSelectDoAfterEvent()
         {
             Category = message.Category,
@@ -94,8 +97,9 @@ public sealed class MagicMirrorSystem : EntitySystem
             BreakOnUserMove = true,
             BreakOnWeightlessMove = false,
             NeedHand = true
-        });
+        }, out var doAfterId);
 
+        component.DoAfter = doAfterId;
         _audio.PlayPvs(component.ChangeHairSound, uid);
     }
 
@@ -131,6 +135,9 @@ public sealed class MagicMirrorSystem : EntitySystem
         if (component.Target is not { } target || message.Session.AttachedEntity is not { } user)
             return;
 
+        _doAfterSystem.Cancel(component.DoAfter);
+        component.DoAfter = null;
+
         var doAfter = new MagicMirrorChangeColorDoAfterEvent()
         {
             Category = message.Category,
@@ -146,7 +153,9 @@ public sealed class MagicMirrorSystem : EntitySystem
             BreakOnUserMove = true,
             BreakOnWeightlessMove = false,
             NeedHand = true
-        });
+        }, out var doAfterId);
+
+        component.DoAfter = doAfterId;
     }
     private void OnChangeColorDoAfter(EntityUid uid, MagicMirrorComponent component, MagicMirrorChangeColorDoAfterEvent args)
     {
@@ -181,6 +190,9 @@ public sealed class MagicMirrorSystem : EntitySystem
         if (component.Target is not { } target || message.Session.AttachedEntity is not { } user)
             return;
 
+        _doAfterSystem.Cancel(component.DoAfter);
+        component.DoAfter = null;
+
         var doAfter = new MagicMirrorRemoveSlotDoAfterEvent()
         {
             Category = message.Category,
@@ -196,8 +208,9 @@ public sealed class MagicMirrorSystem : EntitySystem
             BreakOnUserMove = true,
             BreakOnWeightlessMove = false,
             NeedHand = true
-        });
+        }, out var doAfterId);
 
+        component.DoAfter = doAfterId;
         _audio.PlayPvs(component.ChangeHairSound, uid);
     }
 
@@ -236,6 +249,9 @@ public sealed class MagicMirrorSystem : EntitySystem
         if (message.Session.AttachedEntity == null)
             return;
 
+        _doAfterSystem.Cancel(component.DoAfter);
+        component.DoAfter = null;
+
         var doAfter = new MagicMirrorAddSlotDoAfterEvent()
         {
             Category = message.Category,
@@ -249,8 +265,9 @@ public sealed class MagicMirrorSystem : EntitySystem
             BreakOnUserMove = true,
             BreakOnWeightlessMove = false,
             NeedHand = true
-        });
+        }, out var doAfterId);
 
+        component.DoAfter = doAfterId;
         _audio.PlayPvs(component.ChangeHairSound, uid);
     }
     private void OnAddSlotDoAfter(EntityUid uid, MagicMirrorComponent component, MagicMirrorAddSlotDoAfterEvent args)