From 93079d522dc80b8d414066d98fa003040d30c1a2 Mon Sep 17 00:00:00 2001 From: metalgearsloth <31366439+metalgearsloth@users.noreply.github.com> Date: Fri, 8 Jul 2022 13:17:01 +1000 Subject: [PATCH] Probably fix ghost overlays (#9529) --- Content.Client/MobState/MobStateSystem.cs | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/Content.Client/MobState/MobStateSystem.cs b/Content.Client/MobState/MobStateSystem.cs index c7036a3446..743f31fcaf 100644 --- a/Content.Client/MobState/MobStateSystem.cs +++ b/Content.Client/MobState/MobStateSystem.cs @@ -12,17 +12,16 @@ namespace Content.Client.MobState; public sealed partial class MobStateSystem : SharedMobStateSystem { + [Dependency] private readonly IOverlayManager _overlayManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!; private Overlays.DamageOverlay _overlay = default!; - public const short Levels = 7; - public override void Initialize() { base.Initialize(); _overlay = new Overlays.DamageOverlay(); - IoCManager.Resolve().AddOverlay(_overlay); + _overlayManager.AddOverlay(_overlay); SubscribeLocalEvent(OnPlayerAttach); SubscribeLocalEvent(OnPlayerDetach); @@ -32,7 +31,7 @@ public sealed partial class MobStateSystem : SharedMobStateSystem public override void Shutdown() { base.Shutdown(); - IoCManager.Resolve().RemoveOverlay(_overlay); + _overlayManager.RemoveOverlay(_overlay); } private void OnMobHandleState(EntityUid uid, MobStateComponent component, ref ComponentHandleState args) @@ -58,9 +57,18 @@ public sealed partial class MobStateSystem : SharedMobStateSystem { SetLevel(mobState, damageable.TotalDamage); } + else + { + ClearOverlay(); + } } private void OnPlayerDetach(PlayerDetachedEvent ev) + { + ClearOverlay(); + } + + private void ClearOverlay() { _overlay.State = DamageState.Alive; _overlay.BruteLevel = 0f; @@ -80,10 +88,7 @@ public sealed partial class MobStateSystem : SharedMobStateSystem if (_playerManager.LocalPlayer?.ControlledEntity != uid) return; - _overlay.State = DamageState.Alive; - _overlay.BruteLevel = 0f; - _overlay.OxygenLevel = 0f; - _overlay.CritLevel = 0f; + ClearOverlay(); if (!TryComp(uid, out var damageable)) return;