private void OnInteract(EntityUid uid, AirAlarmComponent component, InteractHandEvent args) { if (!_interactionSystem.InRangeUnobstructed(args.User, args.Target)) { return; } if (!EntityManager.TryGetComponent(args.User, out ActorComponent? actor)) { return; } if (EntityManager.TryGetComponent(uid, out WiresComponent wire) && wire.IsPanelOpen) { args.Handled = false; return; } if (EntityManager.TryGetComponent(uid, out ApcPowerReceiverComponent recv) && !recv.Powered) { return; } _uiSystem.GetUiOrNull(component.Owner, SharedAirAlarmInterfaceKey.Key)?.Open(actor.PlayerSession); component.ActivePlayers.Add(actor.PlayerSession.UserId); AddActiveInterface(uid); SendAddress(uid); SendAlarmMode(uid); SendThresholds(uid); SyncAllDevices(uid); SendAirData(uid); }
private void OnAtmosAlarm(EntityUid uid, AirAlarmComponent component, AtmosMonitorAlarmEvent args) { if (component.ActivePlayers.Count != 0) { SyncAllDevices(uid); SendAirData(uid); } string addr = string.Empty; if (EntityManager.TryGetComponent(uid, out DeviceNetworkComponent netConn)) { addr = netConn.Address; } if (args.HighestNetworkType == AtmosMonitorAlarmType.Danger) { SetMode(uid, addr, AirAlarmMode.None, true); // set mode to off to mimic the vents/scrubbers being turned off // update UI // // no, the mode isn't processed here - it's literally just // set to what mimics 'off' } else if (args.HighestNetworkType == AtmosMonitorAlarmType.Normal) { // if the mode is still set to off, set it to filtering instead // alternatively, set it to the last saved mode // // no, this still doesn't execute the mode SetMode(uid, addr, AirAlarmMode.Filtering, true); } }
private void OnResyncAll(EntityUid uid, AirAlarmComponent component, AirAlarmResyncAllDevicesMessage args) { if (AccessCheck(uid, args.Session.AttachedEntity, component)) { component.DeviceData.Clear(); SyncAllDevices(uid); } }
private void OnClose(EntityUid uid, AirAlarmComponent component, BoundUIClosedEvent args) { component.ActivePlayers.Remove(args.Session.UserId); if (component.ActivePlayers.Count == 0) { RemoveActiveInterface(uid); } }
private void OnPacketRecv(EntityUid uid, AirAlarmComponent controller, PacketSentEvent args) { if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string?cmd)) { return; } switch (cmd) { case AirAlarmSyncData: if (!args.Data.TryGetValue(AirAlarmSyncData, out IAtmosDeviceData? data) || data == null || !controller.CanSync) { break; } // Save into component. // Sync data to interface. // _airAlarmDataSystem.UpdateDeviceData(uid, args.SenderAddress, data); // _uiSystem.TrySendUiMessage(uid, SharedAirAlarmInterfaceKey.Key, new AirAlarmUpdateDeviceDataMessage(args.SenderAddress, data)); if (HasComp <WiresComponent>(uid)) { controller.UpdateWires(); } if (!controller.DeviceData.TryAdd(args.SenderAddress, data)) { controller.DeviceData[args.SenderAddress] = data; } return; case AirAlarmSetDataStatus: if (!args.Data.TryGetValue(AirAlarmSetDataStatus, out bool dataStatus)) { break; } // Sync data to interface. // This should say if the result // failed, or succeeded. Don't save it.l SyncDevice(uid, args.SenderAddress); return; case AirAlarmSetMode: if (!args.Data.TryGetValue(AirAlarmSetMode, out AirAlarmMode alarmMode)) { break; } SetMode(uid, args.SenderAddress, alarmMode); return; } }
private void OnPowerChanged(EntityUid uid, AirAlarmComponent component, PowerChangedEvent args) { if (!args.Powered) { ForceCloseAllInterfaces(uid); component.CurrentModeUpdater = null; component.DeviceData.Clear(); } }
private void OnUpdateDeviceData(EntityUid uid, AirAlarmComponent component, AirAlarmUpdateDeviceDataMessage args) { if (AccessCheck(uid, args.Session.AttachedEntity, component)) { SetDeviceData(uid, args.Address, args.Data); } else { SyncDevice(uid, args.Address); } }
private void OnUpdateThreshold(EntityUid uid, AirAlarmComponent component, AirAlarmUpdateAlarmThresholdMessage args) { if (AccessCheck(uid, args.Session.AttachedEntity, component)) { SetThreshold(uid, args.Threshold, args.Type, args.Gas); } else { SendThresholds(uid); } }
private void OnUpdateAlarmMode(EntityUid uid, AirAlarmComponent component, AirAlarmUpdateAlarmModeMessage args) { string addr = string.Empty; if (EntityManager.TryGetComponent(uid, out DeviceNetworkComponent netConn)) { addr = netConn.Address; } if (AccessCheck(uid, args.Session.AttachedEntity, component)) { SetMode(uid, addr, args.Mode, true, false); } else { SendAlarmMode(uid); } }
private void OnShutdown(EntityUid uid, AirAlarmComponent component, ComponentShutdown args) { _activeUserInterfaces.Remove(uid); }