private void OnPacketRecv(EntityUid uid, AtmosAlarmableComponent component, PacketSentEvent args) { if (component.IgnoreAlarms) { return; } if (!EntityManager.TryGetComponent(uid, out DeviceNetworkComponent netConn)) { return; } if (args.Data.TryGetValue(DeviceNetworkConstants.Command, out string?cmd) && cmd == AtmosMonitorSystem.AtmosMonitorAlarmCmd) { // does it have a state & network max state? // does it have a source? // and can this be alarmed by the source? // if so, raise an alarm if (args.Data.TryGetValue(DeviceNetworkConstants.CmdSetState, out AtmosMonitorAlarmType state) && args.Data.TryGetValue(AtmosMonitorSystem.AtmosMonitorAlarmNetMax, out AtmosMonitorAlarmType netMax) && args.Data.TryGetValue(AtmosMonitorSystem.AtmosMonitorAlarmSrc, out string?source) && component.AlarmedByPrototypes.Contains(source)) { component.LastAlarmState = state; component.HighestNetworkState = netMax; RaiseLocalEvent(component.Owner, new AtmosMonitorAlarmEvent(state, netMax)); } } }
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; } }
public void Handle(PacketSentEvent message) { if (message.ProcessId.Equals(this.processId) == false) { return; } this.Add(PacketDirection.Sent, message.Packet); }
private static void ProcessOutgoingQueue(Packet packet) { PacketSentEvent?.Invoke(packet.GetPacket(), packet.GetLength()); PacketHandler handler = OutgoingPacketHandlers.GetHandler(packet.GetPacketID()); int length = _getPacketLength(packet.GetPacketID()); handler?.OnReceive?.Invoke(new PacketReader(packet.GetPacket(), packet.GetLength(), length > 0)); PacketWaitEntries.CheckWait(packet.GetPacket(), PacketDirection.Outgoing); }
private static void ProcessOutgoingQueue(Packet packet) { try { PacketSentEvent?.Invoke(packet.GetPacket(), packet.GetLength()); PacketHandler handler = OutgoingPacketHandlers.GetHandler(packet.GetPacketID()); int length = _getPacketLength(packet.GetPacketID()); handler?.OnReceive?.Invoke(new PacketReader(packet.GetPacket(), packet.GetLength(), length > 0)); PacketWaitEntries.CheckWait(packet.GetPacket(), PacketDirection.Outgoing); } catch (Exception e) { e.ToExceptionless().SetProperty("Packet", packet.GetPacket()) .SetProperty("Player", Player.ToString()).SetProperty("WorldItemCount", Items.Count()) .SetProperty("WorldMobileCount", Mobiles.Count()).Submit(); } }
private void OnPacketRecv(EntityUid uid, GasVentPumpComponent component, PacketSentEvent args) { if (!EntityManager.TryGetComponent(uid, out DeviceNetworkComponent netConn) || !EntityManager.TryGetComponent(uid, out AtmosAlarmableComponent alarmable) || !args.Data.TryGetValue(DeviceNetworkConstants.Command, out var cmd)) { return; } var payload = new NetworkPayload(); switch (cmd) { case AirAlarmSystem.AirAlarmSyncCmd: payload.Add(DeviceNetworkConstants.Command, AirAlarmSystem.AirAlarmSyncData); payload.Add(AirAlarmSystem.AirAlarmSyncData, component.ToAirAlarmData()); _deviceNetSystem.QueuePacket(uid, args.SenderAddress, AirAlarmSystem.Freq, payload); return; case AirAlarmSystem.AirAlarmSetData: if (!args.Data.TryGetValue(AirAlarmSystem.AirAlarmSetData, out GasVentPumpData? setData)) { break; } component.FromAirAlarmData(setData); alarmable.IgnoreAlarms = setData.IgnoreAlarms; payload.Add(DeviceNetworkConstants.Command, AirAlarmSystem.AirAlarmSetDataStatus); payload.Add(AirAlarmSystem.AirAlarmSetDataStatus, true); _deviceNetSystem.QueuePacket(uid, string.Empty, AirAlarmSystem.Freq, payload, true); return; } }
private void OnPacketReceived(EntityUid uid, CrewMonitoringConsoleComponent component, PacketSentEvent args) { var suitSensor = _sensors.PacketToSuitSensor(args.Data); if (suitSensor == null) { return; } suitSensor.Timestamp = _gameTiming.CurTime; component.ConnectedSensors[args.SenderAddress] = suitSensor; }
/// <summary> /// Turns the light on or of when receiving a <see cref="DeviceNetworkConstants.CmdSetState"/> command. /// The light is turned on or of according to the <see cref="DeviceNetworkConstants.StateEnabled"/> value /// </summary> private void OnPacketReceived(EntityUid uid, PoweredLightComponent component, PacketSentEvent args) { if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string?command) || command != DeviceNetworkConstants.CmdSetState) { return; } if (!args.Data.TryGetValue(DeviceNetworkConstants.StateEnabled, out bool enabled)) { return; } SetState(uid, enabled, component); }
/// <summary> /// Listens to the <see cref="DeviceNetworkConstants.CmdSetState"/> command of other switches to sync state /// </summary> private void OnPackedReceived(EntityUid uid, ApcNetSwitchComponent component, PacketSentEvent args) { if (!EntityManager.TryGetComponent(uid, out DeviceNetworkComponent? networkComponent) || args.SenderAddress == networkComponent.Address) { return; } if (!args.Data.TryGetValue(DeviceNetworkConstants.Command, out string?command) || command != DeviceNetworkConstants.CmdSetState) { return; } if (!args.Data.TryGetValue(DeviceNetworkConstants.StateEnabled, out bool enabled)) { return; } component.State = enabled; }
private void OnPacketReceived(EntityUid uid, DeviceNetworkComponent component, PacketSentEvent args) { LastPayload = args.Data; }