Probably fix ghost overlays (#9529)
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user