Probably fix ghost overlays (#9529)

This commit is contained in:
metalgearsloth
2022-07-08 13:17:01 +10:00
committed by GitHub
parent 9dc2496f91
commit 93079d522d

View File

@@ -12,17 +12,16 @@ namespace Content.Client.MobState;
public sealed partial class MobStateSystem : SharedMobStateSystem public sealed partial class MobStateSystem : SharedMobStateSystem
{ {
[Dependency] private readonly IOverlayManager _overlayManager = default!;
[Dependency] private readonly IPlayerManager _playerManager = default!; [Dependency] private readonly IPlayerManager _playerManager = default!;
private Overlays.DamageOverlay _overlay = default!; private Overlays.DamageOverlay _overlay = default!;
public const short Levels = 7;
public override void Initialize() public override void Initialize()
{ {
base.Initialize(); base.Initialize();
_overlay = new Overlays.DamageOverlay(); _overlay = new Overlays.DamageOverlay();
IoCManager.Resolve<IOverlayManager>().AddOverlay(_overlay); _overlayManager.AddOverlay(_overlay);
SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttach); SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttach);
SubscribeLocalEvent<PlayerDetachedEvent>(OnPlayerDetach); SubscribeLocalEvent<PlayerDetachedEvent>(OnPlayerDetach);
@@ -32,7 +31,7 @@ public sealed partial class MobStateSystem : SharedMobStateSystem
public override void Shutdown() public override void Shutdown()
{ {
base.Shutdown(); base.Shutdown();
IoCManager.Resolve<IOverlayManager>().RemoveOverlay(_overlay); _overlayManager.RemoveOverlay(_overlay);
} }
private void OnMobHandleState(EntityUid uid, MobStateComponent component, ref ComponentHandleState args) private void OnMobHandleState(EntityUid uid, MobStateComponent component, ref ComponentHandleState args)
@@ -58,9 +57,18 @@ public sealed partial class MobStateSystem : SharedMobStateSystem
{ {
SetLevel(mobState, damageable.TotalDamage); SetLevel(mobState, damageable.TotalDamage);
} }
else
{
ClearOverlay();
}
} }
private void OnPlayerDetach(PlayerDetachedEvent ev) private void OnPlayerDetach(PlayerDetachedEvent ev)
{
ClearOverlay();
}
private void ClearOverlay()
{ {
_overlay.State = DamageState.Alive; _overlay.State = DamageState.Alive;
_overlay.BruteLevel = 0f; _overlay.BruteLevel = 0f;
@@ -80,10 +88,7 @@ public sealed partial class MobStateSystem : SharedMobStateSystem
if (_playerManager.LocalPlayer?.ControlledEntity != uid) return; if (_playerManager.LocalPlayer?.ControlledEntity != uid) return;
_overlay.State = DamageState.Alive; ClearOverlay();
_overlay.BruteLevel = 0f;
_overlay.OxygenLevel = 0f;
_overlay.CritLevel = 0f;
if (!TryComp<DamageableComponent>(uid, out var damageable)) if (!TryComp<DamageableComponent>(uid, out var damageable))
return; return;