コード例 #1
0
 private void OnSignalReceived(EntityUid uid, ConveyorComponent component, SignalReceivedEvent args)
 {
     switch (args.Port)
     {
     case "state":
         SetState(component, (TwoWayLeverSignal)args.Value !);
         break;
     }
 }
コード例 #2
0
 private void OnSignalReceived(EntityUid uid, ConveyorComponent component, SignalReceivedEvent args)
 {
     if (args.Port == component.OffPort)
     {
         SetState(component, ConveyorState.Off);
     }
     else if (args.Port == component.ForwardPort)
     {
         SetState(component, ConveyorState.Forward);
     }
     else if (args.Port == component.ReversePort)
     {
         SetState(component, ConveyorState.Reverse);
     }
 }
コード例 #3
0
        private void OnSignalReceived(EntityUid uid, GasVentPumpComponent component, SignalReceivedEvent args)
        {
            if (!component.CanLink)
            {
                return;
            }

            if (args.Port == component.PressurizePort)
            {
                component.PumpDirection         = VentPumpDirection.Releasing;
                component.ExternalPressureBound = component.PressurizePressure;
                component.PressureChecks        = VentPressureBound.ExternalBound;
                UpdateState(uid, component);
            }
            else if (args.Port == component.DepressurizePort)
            {
                component.PumpDirection         = VentPumpDirection.Siphoning;
                component.ExternalPressureBound = component.DepressurizePressure;
                component.PressureChecks        = VentPressureBound.ExternalBound;
                UpdateState(uid, component);
            }
        }
コード例 #4
0
 private void OnSignalReceived(EntityUid uid, PoweredLightComponent component, SignalReceivedEvent args)
 {
     if (args.Port == component.OffPort)
     {
         SetState(uid, false, component);
     }
     else if (args.Port == component.OnPort)
     {
         SetState(uid, true, component);
     }
     else if (args.Port == component.TogglePort)
     {
         ToggleLight(uid, component);
     }
 }
コード例 #5
0
 private void OnSignalReceived(EntityUid uid, PoweredLightComponent component, SignalReceivedEvent args)
 {
     switch (args.Port)
     {
     case "state":
         component.ToggleLight();
         break;
     }
 }
コード例 #6
0
 // this is the major reason we split packets into Signal and Data - if they're Signal, we can avoid creating any garbage at all here
 public static void Subscribe <T> (SignalReceivedEvent <T> onReceive) where T : SignalPacket
 {
     callbacks[getHash <T>()] = (peer, reader) => onReceive(peer);
 }
コード例 #7
0
 private void OnSignalReceived(EntityUid uid, TriggerOnSignalReceivedComponent component, SignalReceivedEvent args)
 {
     _trigger.Trigger(uid);
 }
コード例 #8
0
        private void OnSignalReceived(EntityUid uid, TriggerOnSignalComponent component, SignalReceivedEvent args)
        {
            if (args.Port != component.Port)
            {
                return;
            }

            Trigger(uid);
        }
コード例 #9
0
        private void OnSignalReceived(EntityUid uid, DoorSignalControlComponent component, SignalReceivedEvent args)
        {
            if (!TryComp(uid, out DoorComponent? door))
            {
                return;
            }

            if (args.Port == component.OpenPort)
            {
                if (door.State != DoorState.Open)
                {
                    _doorSystem.TryOpen(uid, door);
                }
            }
            else if (args.Port == component.ClosePort)
            {
                if (door.State != DoorState.Closed)
                {
                    _doorSystem.TryClose(uid, door);
                }
            }
            else if (args.Port == component.TogglePort)
            {
                _doorSystem.TryToggleDoor(uid, door);
            }
        }