]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
add dirty calls to mask system (#27128)
authordeltanedas <39013340+deltanedas@users.noreply.github.com>
Fri, 19 Apr 2024 05:40:23 +0000 (05:40 +0000)
committerGitHub <noreply@github.com>
Fri, 19 Apr 2024 05:40:23 +0000 (15:40 +1000)
* add dirty calls to mask system

* among

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
Content.Shared/Clothing/EntitySystems/MaskSystem.cs

index aab2a172dc12bcb81948a7b3d2d8a2e5d67b1da6..4db26a49e75064fff70f7f17f42ac9b7a3869565 100644 (file)
@@ -42,12 +42,9 @@ public sealed class MaskSystem : EntitySystem
             return;
 
         mask.IsToggled ^= true;
-        _actionSystem.SetToggled(mask.ToggleActionEntity, mask.IsToggled);
 
-        if (mask.IsToggled)
-            _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-down-popup-message", ("mask", uid)), args.Performer, args.Performer);
-        else
-            _popupSystem.PopupEntity(Loc.GetString("action-mask-pull-up-popup-message", ("mask", uid)), args.Performer, args.Performer);
+        var msg = $"action-mask-pull-{mask.IsToggled ? "down" : "up"}-popup-message";
+        _popupSystem.PopupEntity(Loc.GetString(msg, ("mask", uid)), args.Performer, args.Performer);
 
         ToggleMaskComponents(uid, mask, args.Performer, mask.EquippedPrefix);
     }
@@ -55,18 +52,22 @@ public sealed class MaskSystem : EntitySystem
     // set to untoggled when unequipped, so it isn't left in a 'pulled down' state
     private void OnGotUnequipped(EntityUid uid, MaskComponent mask, GotUnequippedEvent args)
     {
-        if (mask.ToggleActionEntity == null)
+        if (!mask.IsToggled)
             return;
 
         mask.IsToggled = false;
-        Dirty(uid, mask);
-        _actionSystem.SetToggled(mask.ToggleActionEntity, mask.IsToggled);
-
         ToggleMaskComponents(uid, mask, args.Equipee, mask.EquippedPrefix, true);
     }
 
+    /// <summary>
+    /// Called after setting IsToggled, raises events and dirties.
+    /// <summary>
     private void ToggleMaskComponents(EntityUid uid, MaskComponent mask, EntityUid wearer, string? equippedPrefix = null, bool isEquip = false)
     {
+        Dirty(uid, mask);
+        if (mask.ToggleActionEntity is {} action)
+            _actionSystem.SetToggled(action, mask.IsToggled);
+
         var maskEv = new ItemMaskToggledEvent(wearer, equippedPrefix, mask.IsToggled, isEquip);
         RaiseLocalEvent(uid, ref maskEv);