using Content.Shared.Mining.Components; using Robust.Client.Graphics; using Robust.Client.Player; using Robust.Shared.Player; namespace Content.Client.Mining; /// /// This handles the lifetime of the for a given entity. /// public sealed class MiningOverlaySystem : EntitySystem { [Dependency] private readonly IPlayerManager _player = default!; [Dependency] private readonly IOverlayManager _overlayMan = default!; private MiningOverlay _overlay = default!; /// public override void Initialize() { SubscribeLocalEvent(OnInit); SubscribeLocalEvent(OnShutdown); SubscribeLocalEvent(OnPlayerAttached); SubscribeLocalEvent(OnPlayerDetached); _overlay = new(); } private void OnPlayerAttached(Entity ent, ref LocalPlayerAttachedEvent args) { _overlayMan.AddOverlay(_overlay); } private void OnPlayerDetached(Entity ent, ref LocalPlayerDetachedEvent args) { _overlayMan.RemoveOverlay(_overlay); } private void OnInit(Entity ent, ref ComponentInit args) { if (_player.LocalEntity == ent) { _overlayMan.AddOverlay(_overlay); } } private void OnShutdown(Entity ent, ref ComponentShutdown args) { if (_player.LocalEntity == ent) { _overlayMan.RemoveOverlay(_overlay); } } }