Remove SharedEye (but content) (#19481)

This commit is contained in:
metalgearsloth
2023-09-11 16:15:23 +10:00
committed by GitHub
parent c477e5b0c2
commit 28bf3a6240
29 changed files with 86 additions and 75 deletions

View File

@@ -4,11 +4,11 @@ using Content.Server.GameTicking;
using Content.Server.Ghost.Components;
using Content.Server.Mind;
using Content.Server.Roles.Jobs;
using Content.Server.Visible;
using Content.Server.Warps;
using Content.Shared.Actions;
using Content.Shared.Administration;
using Content.Shared.Examine;
using Content.Shared.Eye;
using Content.Shared.Follower;
using Content.Shared.Ghost;
using Content.Shared.Mind;
@@ -37,6 +37,7 @@ namespace Content.Server.Ghost
[Dependency] private readonly EntityLookupSystem _lookup = default!;
[Dependency] private readonly FollowerSystem _followerSystem = default!;
[Dependency] private readonly MobStateSystem _mobState = default!;
[Dependency] private readonly SharedEyeSystem _eye = default!;
[Dependency] private readonly SharedPhysicsSystem _physics = default!;
[Dependency] private readonly MindSystem _minds = default!;
[Dependency] private readonly JobSystem _jobs = default!;
@@ -106,7 +107,7 @@ namespace Content.Server.Ghost
private void OnGhostStartup(EntityUid uid, GhostComponent component, ComponentStartup args)
{
// Allow this entity to be seen by other ghosts.
var visibility = EntityManager.EnsureComponent<VisibilityComponent>(component.Owner);
var visibility = EntityManager.EnsureComponent<VisibilityComponent>(uid);
if (_ticker.RunLevel != GameRunLevel.PostRound)
{
@@ -115,9 +116,9 @@ namespace Content.Server.Ghost
_visibilitySystem.RefreshVisibility(visibility);
}
if (EntityManager.TryGetComponent(component.Owner, out EyeComponent? eye))
if (EntityManager.TryGetComponent(uid, out EyeComponent? eye))
{
eye.VisibilityMask |= (uint) VisibilityFlags.Ghost;
_eye.SetVisibilityMask(uid, eye.VisibilityMask | (int) VisibilityFlags.Ghost, eye);
}
var time = _gameTiming.CurTime;
@@ -142,7 +143,7 @@ namespace Content.Server.Ghost
if (!Terminating(uid))
{
// Entity can't be seen by ghosts anymore.
if (EntityManager.TryGetComponent(component.Owner, out VisibilityComponent? visibility))
if (EntityManager.TryGetComponent(uid, out VisibilityComponent? visibility))
{
_visibilitySystem.RemoveLayer(visibility, (int) VisibilityFlags.Ghost, false);
_visibilitySystem.AddLayer(visibility, (int) VisibilityFlags.Normal, false);
@@ -150,9 +151,9 @@ namespace Content.Server.Ghost
}
// Entity can't see ghosts anymore.
if (EntityManager.TryGetComponent(component.Owner, out EyeComponent? eye))
if (EntityManager.TryGetComponent(uid, out EyeComponent? eye))
{
eye.VisibilityMask &= ~(uint) VisibilityFlags.Ghost;
_eye.SetVisibilityMask(uid, eye.VisibilityMask & ~(int) VisibilityFlags.Ghost, eye);
}
_actions.RemoveAction(uid, component.ActionEntity);
@@ -334,9 +335,11 @@ namespace Content.Server.Ghost
if (uid == null
|| !entityManager.HasComponent<GhostComponent>(uid)
|| !entityManager.TryGetComponent<EyeComponent>(uid, out var eyeComponent))
{
return;
}
eyeComponent.VisibilityMask ^= (uint) VisibilityFlags.Ghost;
entityManager.System<EyeSystem>().SetVisibilityMask(uid.Value, eyeComponent.VisibilityMask ^ (int) VisibilityFlags.Ghost, eyeComponent);
}
}
}