using Content.Shared.CartridgeLoader; using Content.Shared.CartridgeLoader.Cartridges; using Content.Server.Psionics.Glimmer; namespace Content.Server.CartridgeLoader.Cartridges; public sealed class GlimmerMonitorCartridgeSystem : EntitySystem { [Dependency] private readonly CartridgeLoaderSystem? _cartridgeLoaderSystem = default!; [Dependency] private readonly PassiveGlimmerReductionSystem _glimmerReductionSystem = default!; public override void Initialize() { base.Initialize(); SubscribeLocalEvent(OnUiReady); SubscribeLocalEvent(OnMessage); } /// /// This gets called when the ui fragment needs to be updated for the first time after activating /// private void OnUiReady(EntityUid uid, GlimmerMonitorCartridgeComponent component, CartridgeUiReadyEvent args) { UpdateUiState(uid, args.Loader, component); } private void OnMessage(EntityUid uid, GlimmerMonitorCartridgeComponent component, CartridgeMessageEvent args) { if (args is not GlimmerMonitorSyncMessageEvent) return; UpdateUiState(uid, EntityManager.GetEntity(args.LoaderUid), component); } public void UpdateUiState(EntityUid uid, EntityUid loaderUid, GlimmerMonitorCartridgeComponent? component) { if (!Resolve(uid, ref component)) return; var state = new GlimmerMonitorUiState(_glimmerReductionSystem.GlimmerValues); _cartridgeLoaderSystem?.UpdateCartridgeUiState(loaderUid, state); } }