Example #1
0
        private DeviceMonitor AddOrGetDevice(string deviceName, DeviceType deviceType, Guid deviceGuid)
        {
            DeviceMonitor deviceMonitor = null;

            if (!_nameToDeviceMonitor.TryGetValue(deviceName, out deviceMonitor))
            {
                deviceMonitor = new DeviceMonitor(deviceName, deviceType, deviceGuid, _mapper);
                _nameToDeviceMonitor.Add(deviceName, deviceMonitor);
                Devices.Add(deviceMonitor);
                switch (deviceType)
                {
                case DeviceType.Unknown:
                    UnknownDevices.Add(deviceMonitor);
                    break;

                case DeviceType.Keyboard:
                    KeyboardDevices.Add(deviceMonitor);
                    break;

                case DeviceType.Mouse:
                    MouseDevices.Add(deviceMonitor);
                    break;

                case DeviceType.Joystick:
                    JoystickDevices.Add(deviceMonitor);
                    break;
                }
            }
            return(deviceMonitor);
        }
Example #2
0
        /// <summary>
        /// Function to create a joystick interface.
        /// </summary>
        /// <param name="window">Window to bind with.</param>
        /// <param name="joystickName">Name of the joystick to use.</param>
        /// <returns>A new joystick interface.</returns>
        /// <remarks>Pass NULL to the <paramref name="window"/> parameter to use the <see cref="P:GorgonLibrary.Gorgon.ApplicationForm">Gorgon application form</see>.</remarks>
        /// <exception cref="System.ArgumentException">Thrown when the <paramref name="joystickName"/> is empty.</exception>
        /// <exception cref="System.ArgumentNullException">Thrown when the <paramref name="joystickName"/> is NULL (Nothing in VB.Net).</exception>
        /// <exception cref="System.Collections.Generic.KeyNotFoundException">Thrown when a joystick with the <paramref name="joystickName"/> could not be found.</exception>
        public GorgonJoystick CreateJoystick(Control window, string joystickName)
        {
            if (joystickName == null)
            {
                throw new ArgumentNullException("joystickName");
            }

            if (string.IsNullOrWhiteSpace(joystickName))
            {
                throw new ArgumentException(Resources.GORINP_PARAMETER_EMPTY, "joystickName");
            }

            GorgonInputDeviceInfo deviceInfo;

            if (!JoystickDevices.TryGetValue(joystickName, out deviceInfo))
            {
                throw new ArgumentException(string.Format(Resources.GORINP_JOYSTICK_NOT_FOUND, joystickName), "joystickName");
            }

            var joystickDevice = GetInputDevice <GorgonJoystick>(deviceInfo);

            if (joystickDevice == null)
            {
                joystickDevice            = CreateJoystickImpl(window, deviceInfo);
                joystickDevice.UUID       = GetDeviceUUID(deviceInfo, joystickDevice.GetType());
                joystickDevice.DeviceType = InputDeviceType.Joystick;
                Devices.Add(joystickDevice.UUID, joystickDevice);
            }

            joystickDevice.Initialize();
            joystickDevice.Bind(window);
            joystickDevice.Enabled   = true;
            joystickDevice.Exclusive = (ExclusiveDevices & InputDeviceType.Joystick) == InputDeviceType.Joystick;

            return(joystickDevice);
        }
Example #3
0
        void Mapper_DeviceChanged(object sender, DeviceInfo e)
        {
            Action action = null;

            switch (e.InfoAction)
            {
            case DeviceInfo.InfoType.Added:
                action = () =>
                {
                    AddMessage(new StatusMessage(e.Device, "Added"));
                    AddOrGetDevice(e.Device, e.DeviceType, e.DeviceGuid);
                };
                break;

            case DeviceInfo.InfoType.Checked:
                action = () =>
                {
                    AddMessage(new StatusMessage(e.Device, "Checked"));
                    AddOrGetDevice(e.Device, e.DeviceType, e.DeviceGuid);
                };
                break;

            case DeviceInfo.InfoType.Error:
                action = () =>
                {
                    AddMessage(new StatusMessage(e.Device, "Error"));
                    if (e is DeviceInfoError)
                    {
                        AddMessage(new StatusMessage(e.Device, ((DeviceInfoError)e).ErrorMessage));
                    }
                };
                break;

            case DeviceInfo.InfoType.Removed:
                action = () =>
                {
                    AddMessage(new StatusMessage(e.Device, "Removed"));
                    DeviceMonitor deviceMonitor = null;
                    if (_nameToDeviceMonitor.TryGetValue(e.Device, out deviceMonitor))
                    {
                        _nameToDeviceMonitor.Remove(e.Device);
                        Devices.Remove(deviceMonitor);
                        switch (e.DeviceType)
                        {
                        case DeviceType.Unknown:
                            UnknownDevices.Remove(deviceMonitor);
                            break;

                        case DeviceType.Keyboard:
                            KeyboardDevices.Remove(deviceMonitor);
                            break;

                        case DeviceType.Mouse:
                            MouseDevices.Remove(deviceMonitor);
                            break;

                        case DeviceType.Joystick:
                            JoystickDevices.Remove(deviceMonitor);
                            break;
                        }
                    }
                };
                break;

            case DeviceInfo.InfoType.Updated:
                action = () => AddMessage(new StatusMessage(e.Device, "Updated"));
                break;
            }
            if (action != null)
            {
                _actionQueue.Add(action);
            }
        }