Probably fix ghost overlays (#9529)
This commit is contained in:
@@ -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<IOverlayManager>().AddOverlay(_overlay);
|
||||
_overlayManager.AddOverlay(_overlay);
|
||||
|
||||
SubscribeLocalEvent<PlayerAttachedEvent>(OnPlayerAttach);
|
||||
SubscribeLocalEvent<PlayerDetachedEvent>(OnPlayerDetach);
|
||||
@@ -32,7 +31,7 @@ public sealed partial class MobStateSystem : SharedMobStateSystem
|
||||
public override void Shutdown()
|
||||
{
|
||||
base.Shutdown();
|
||||
IoCManager.Resolve<IOverlayManager>().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<DamageableComponent>(uid, out var damageable))
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user