コード例 #1
0
    private void OnSetName(EntityUid uid, SurveillanceCameraComponent component, SurveillanceCameraSetupSetName args)
    {
        if (args.UiKey is not SurveillanceCameraSetupUiKey key ||
            key != SurveillanceCameraSetupUiKey.Camera ||
            string.IsNullOrEmpty(args.Name) ||
            args.Name.Length > CameraNameLimit)
        {
            return;
        }

        component.CameraId = args.Name;
        component.NameSet  = true;
        UpdateSetupInterface(uid, component);
    }
コード例 #2
0
    private void AddVerbs(EntityUid uid, SurveillanceCameraComponent component, GetVerbsEvent <AlternativeVerb> verbs)
    {
        if (!_actionBlocker.CanInteract(verbs.User, uid))
        {
            return;
        }

        if (component.NameSet && component.NetworkSet)
        {
            return;
        }

        AlternativeVerb verb = new();

        verb.Text = Loc.GetString("surveillance-camera-setup");
        verb.Act  = () => OpenSetupInterface(uid, verbs.User, component);
        verbs.Verbs.Add(verb);
    }
コード例 #3
0
    private void OnSetNetwork(EntityUid uid, SurveillanceCameraComponent component,
                              SurveillanceCameraSetupSetNetwork args)
    {
        if (args.UiKey is not SurveillanceCameraSetupUiKey key ||
            key != SurveillanceCameraSetupUiKey.Camera)
        {
            return;
        }
        if (args.Network < 0 || args.Network >= component.AvailableNetworks.Count)
        {
            return;
        }

        if (!_prototypeManager.TryIndex <DeviceFrequencyPrototype>(component.AvailableNetworks[args.Network],
                                                                   out var frequency))
        {
            return;
        }

        _deviceNetworkSystem.SetReceiveFrequency(uid, frequency.Frequency);
        component.NetworkSet = true;
        UpdateSetupInterface(uid, component);
    }
コード例 #4
0
    private void OnPacketReceived(EntityUid uid, SurveillanceCameraComponent component, DeviceNetworkPacketEvent args)
    {
        if (!component.Active)
        {
            return;
        }

        if (!TryComp(uid, out DeviceNetworkComponent? deviceNet))
        {
            return;
        }

        if (args.Data.TryGetValue(DeviceNetworkConstants.Command, out string?command))
        {
            var payload = new NetworkPayload()
            {
                { DeviceNetworkConstants.Command, string.Empty },
                { CameraAddressData, deviceNet.Address },
                { CameraNameData, component.CameraId },
                { CameraSubnetData, string.Empty }
            };

            var dest = string.Empty;

            switch (command)
            {
            case CameraConnectMessage:
                if (!args.Data.TryGetValue(CameraAddressData, out dest) ||
                    string.IsNullOrEmpty(args.Address))
                {
                    return;
                }

                payload[DeviceNetworkConstants.Command] = CameraConnectMessage;
                break;

            case CameraHeartbeatMessage:
                if (!args.Data.TryGetValue(CameraAddressData, out dest) ||
                    string.IsNullOrEmpty(args.Address))
                {
                    return;
                }

                payload[DeviceNetworkConstants.Command] = CameraHeartbeatMessage;
                break;

            case CameraPingMessage:
                if (!args.Data.TryGetValue(CameraSubnetData, out string?subnet))
                {
                    return;
                }

                dest = args.SenderAddress;
                payload[CameraSubnetData] = subnet;
                payload[DeviceNetworkConstants.Command] = CameraDataMessage;
                break;
            }

            _deviceNetworkSystem.QueuePacket(
                uid,
                dest,
                payload);
        }
    }
コード例 #5
0
 private void OnShutdown(EntityUid camera, SurveillanceCameraComponent component, ComponentShutdown args)
 {
     Deactivate(camera, component);
 }
コード例 #6
0
 private void OnPowerChanged(EntityUid camera, SurveillanceCameraComponent component, PowerChangedEvent args)
 {
     SetActive(camera, args.Powered, component);
 }