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));
                }
            }
        }
Ejemplo n.º 2
0
        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;
            }
        }
Ejemplo n.º 3
0
        public void Handle(PacketSentEvent message)
        {
            if (message.ProcessId.Equals(this.processId) == false)
            {
                return;
            }

            this.Add(PacketDirection.Sent, message.Packet);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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;
        }
Ejemplo n.º 8
0
        /// <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);
        }
Ejemplo n.º 9
0
        /// <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;
        }
Ejemplo n.º 10
0
 private void OnPacketReceived(EntityUid uid, DeviceNetworkComponent component, PacketSentEvent args)
 {
     LastPayload = args.Data;
 }