]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Add mind entities to PVS overrides (#20847)
authorLeon Friedrich <60421075+ElectroJr@users.noreply.github.com>
Wed, 11 Oct 2023 03:45:05 +0000 (14:45 +1100)
committerGitHub <noreply@github.com>
Wed, 11 Oct 2023 03:45:05 +0000 (14:45 +1100)
Content.Server/GameTicking/GameTicker.Player.cs
Content.Server/Mind/MindSystem.cs

index f6402589b2e19d5bdf9fea4e4f7d2910d9c0da72..3aef1bbe78525a964f1f7916fb2b9dedcd679a6b 100644 (file)
@@ -29,8 +29,11 @@ namespace Content.Server.GameTicking
 
             if (_mind.TryGetMind(session.UserId, out var mindId, out var mind))
             {
-                if (args.OldStatus == SessionStatus.Connecting && args.NewStatus == SessionStatus.Connected)
+                if (args.NewStatus != SessionStatus.Disconnected)
+                {
                     mind.Session = session;
+                    _pvsOverride.AddSessionOverride(mindId.Value, session);
+                }
 
                 DebugTools.Assert(mind.Session == session);
             }
@@ -109,7 +112,10 @@ namespace Content.Server.GameTicking
                 {
                     _chatManager.SendAdminAnnouncement(Loc.GetString("player-leave-message", ("name", args.Session.Name)));
                     if (mind != null)
+                    {
+                        _pvsOverride.ClearOverride(mindId!.Value);
                         mind.Session = null;
+                    }
 
                     _userDb.ClientDisconnected(session);
                     break;
index 06f97bd3b9f67654c15bf15da1b6cebe5c8b6c95..373007fd1b5a2ba0ca7ed389a31556c0f85bcfda 100644 (file)
@@ -7,6 +7,7 @@ using Content.Shared.Mind;
 using Content.Shared.Mind.Components;
 using Content.Shared.Players;
 using Robust.Server.GameObjects;
+using Robust.Server.GameStates;
 using Robust.Server.Player;
 using Robust.Shared.Map;
 using Robust.Shared.Network;
@@ -25,6 +26,7 @@ public sealed class MindSystem : SharedMindSystem
     [Dependency] private readonly MetaDataSystem _metaData = default!;
     [Dependency] private readonly SharedGhostSystem _ghosts = default!;
     [Dependency] private readonly SharedTransformSystem _transform = default!;
+    [Dependency] private readonly PvsOverrideSystem _pvsOverride = default!;
 
     public override void Initialize()
     {
@@ -258,6 +260,8 @@ public sealed class MindSystem : SharedMindSystem
         var oldEntity = mind.OwnedEntity;
         if (oldComp != null && oldEntity != null)
         {
+            if (oldComp.Mind != null)
+                _pvsOverride.ClearOverride(oldComp.Mind.Value);
             oldComp.Mind = null;
             RaiseLocalEvent(oldEntity.Value, new MindRemovedMessage(oldEntity.Value, mind), true);
         }
@@ -309,6 +313,7 @@ public sealed class MindSystem : SharedMindSystem
         if (mind.UserId == userId)
             return;
 
+        _pvsOverride.ClearOverride(mindId);
         if (userId != null && !_players.TryGetPlayerData(userId.Value, out _))
         {
             Log.Error($"Attempted to set mind user to invalid value {userId}");
@@ -350,6 +355,7 @@ public sealed class MindSystem : SharedMindSystem
         if (_players.TryGetSessionById(userId.Value, out var ret))
         {
             mind.Session = ret;
+            _pvsOverride.AddSessionOverride(mindId, ret);
             _actor.Attach(mind.CurrentEntity, ret);
         }