/// <summary>
		/// Creates a new <see cref="IActionMethodDefinition"/> in the context of <paramref name="controllerDefinition"/>
		/// for <paramref name="method"/>.
		/// </summary>
		/// <param name="controllerDefinition">The controller definition in which the method is found.</param>
		/// <param name="method">The method for which to create a definition.</param>
		/// <returns>A new <see cref="IActionMethodDefinition"/> instance.</returns>
		public IActionMethodDefinition Create(IControllerDefinition controllerDefinition, MethodInfo method)
		{
			if (controllerDefinition	== null) throw new ArgumentNullException("controllerDefinition");
			if (method					== null) throw new ArgumentNullException("method");

			var definition	= new ActionMethodDefinition();
			definition.Name	= method.GetProxyName();
			definition.Type = GetMethodType(method);
			definition.Url	= GetUrl(controllerDefinition, GetExplicitActionName(method) ?? method.Name.ToLower());

			var index		= 0;
			var parameters	= method.GetParameters();
			foreach (var param in parameters)
			{
				var record = new ParameterDefinition {
					Index = index,
					Name = param.Name,
					Type = param.ParameterType
				};
				if (param.HasAttribute<FromUriAttribute>())
					definition.UrlParameters.Add(record);
				else if (param.HasAttribute<FromBodyAttribute>())
					definition.BodyParameter = record;
				else if (definition.Type == HttpVerbs.Get)
					definition.UrlParameters.Add(record);
				else if (definition.Type == HttpVerbs.Post && parameters.Length == 1)
					definition.BodyParameter = record;
				else
					definition.UrlParameters.Add(record);

				index++;
			}

			return definition;
		}
 public Level20DeskControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
     : base(device, definition)
 {
     _availableEffects = new Dictionary <string, byte>
     {
         ["PerLed"] = 0x24
     };
 }
 public RiingTrioControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
     : base(device, definition)
 {
     _availableEffects = new Dictionary <string, byte>
     {
         { "PerLed", 0x24 }
     };
 }
Esempio n. 4
0
 public DpsgControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
     : base(device, definition)
 {
     _availableEffects = new Dictionary <string, byte>()
     {
         ["ByLed"] = 0x18,
         ["Full"]  = 0x19
     };
 }
Esempio n. 5
0
 public RiingControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
     : base(device, definition)
 {
     _availableEffects = new Dictionary <string, byte>()
     {
         ["Flow"] = 0x01,
         ["Full"] = 0x00
     };
 }
        /// <summary>
        /// Creates a new <see cref="IActionMethodDefinition"/> in the context of <paramref name="controllerDefinition"/>
        /// for <paramref name="method"/>.
        /// </summary>
        /// <param name="controllerDefinition">The controller definition in which the method is found.</param>
        /// <param name="method">The method for which to create a definition.</param>
        /// <returns>A new <see cref="IActionMethodDefinition"/> instance.</returns>
        public IActionMethodDefinition Create(IControllerDefinition controllerDefinition, MethodInfo method)
        {
            if (controllerDefinition == null)
            {
                throw new ArgumentNullException("controllerDefinition");
            }
            if (method == null)
            {
                throw new ArgumentNullException("method");
            }

            var definition = new ActionMethodDefinition();

            definition.Name = method.GetProxyName();
            definition.Type = GetMethodType(method);
            definition.Url  = GetUrl(controllerDefinition, GetExplicitActionName(method) ?? method.Name.ToLower());

            var index      = 0;
            var parameters = method.GetParameters();

            foreach (var param in parameters)
            {
                var record = new ParameterDefinition {
                    Index = index,
                    Name  = param.Name,
                    Type  = param.ParameterType
                };
                if (param.HasAttribute <FromUriAttribute>())
                {
                    definition.UrlParameters.Add(record);
                }
                else if (param.HasAttribute <FromBodyAttribute>())
                {
                    definition.BodyParameter = record;
                }
                else if (definition.Type == HttpVerbs.Get)
                {
                    definition.UrlParameters.Add(record);
                }
                else if (definition.Type == HttpVerbs.Post && parameters.Length == 1)
                {
                    definition.BodyParameter = record;
                }
                else
                {
                    definition.UrlParameters.Add(record);
                }

                index++;
            }

            return(definition);
        }
        private string GetUrl(IControllerDefinition controller, string action)
        {
            var routeValues = new RouteValueDictionary();

            routeValues.Add("controller", controller.UrlName);
            routeValues.Add("action", action);

            if (controller.Type == ControllerType.WebApi)
            {
                return(_pathUtility.ToAbsolute(string.Format("~/api/proxy/{0}/{1}", controller.UrlName, action)));
            }
            else
            {
                return(_pathUtility.ToAbsolute(_pathUtility.GetVirtualPath(routeValues)));
            }
        }
        public RiingPlusControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
            : base(device, definition)
        {
            var effectModes = new Dictionary <string, byte>()
            {
                ["Flow"]     = 0x00,
                ["Spectrum"] = 0x04,
                ["Ripple"]   = 0x08,
                ["Blink"]    = 0x0c,
                ["Pulse"]    = 0x10,
                ["Wave"]     = 0x14,
            };

            var effectSpeeds = new Dictionary <string, byte>()
            {
                ["Extreme"] = 0x00,
                ["Fast"]    = 0x01,
                ["Normal"]  = 0x02,
                ["Slow"]    = 0x03
            };

            var result = new Dictionary <string, byte>();

            foreach (var mkv in effectModes)
            {
                foreach (var skv in effectSpeeds)
                {
                    result.Add($"{mkv.Key}_{skv.Key}", (byte)(mkv.Value + skv.Value));
                }
            }

            result.Add("PerLed", 0x18);
            result.Add("Full", 0x19);

            _availableEffects = result;
        }
Esempio n. 9
0
        public DefaultControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
            : base(device, definition)
        {
            var effectModes = new Dictionary <string, byte>()
            {
                ["Flow"]     = 0x00,
                ["Spectrum"] = 0x04,
                ["Ripple"]   = 0x08,
                ["Blink"]    = 0x0c,
                ["Pulse"]    = 0x10,
                ["Wave"]     = 0x14,
            };

            var effectSpeeds = new Dictionary <string, byte>()
            {
                ["Extreme"] = 0x00,
                ["Fast"]    = 0x01,
                ["Normal"]  = 0x02,
                ["Slow"]    = 0x03
            };

            var result = new Dictionary <string, byte>();

            foreach (var(e, eb) in effectModes)
            {
                foreach (var(s, sb) in effectSpeeds)
                {
                    result.Add($"{e}_{s}", (byte)(eb + sb));
                }
            }

            result.Add("ByLed", 0x18);
            result.Add("Full", 0x19);

            _availableEffects = result;
        }
        public override string CompileController(int playerIndex, IPlatformInfo platformInfo, IControllerDefinition controllerDefinition, IControllerTemplate controllerTemplate, IGamepadAbstraction gamepadAbstraction, IInputTemplate inputTemplate, IGameInfo gameInfo)
        {
            var controllerMappings = gamepadAbstraction.ProfileType == ControllerProfileType.KEYBOARD_PROFILE ?
               controllerTemplate.KeyboardControllerMappings : controllerTemplate.GamepadControllerMappings;

            string deviceName = gamepadAbstraction.DeviceName;
            IList<IInputDevice> devices = new InputManager().GetGamepads();
            if (deviceName == null) deviceName = String.Empty;

            int realWiimoteAmount = devices.Count(device => device.DI_ProductName.Contains("RVL-CNT"));

            if(controllerDefinition.ControllerID == "WII_COMBINED_CONTROLLER")
            {
                //All wiimotes have the same attachment
                int wiimote_extension = this.ConfigurationFlagStore.GetValue(gameInfo, "wiimote_extension", ConfigurationFlagTypes.SELECT_FLAG);
                controllerMappings["default"].KeyMappings["EXTENSION"] = this.ConfigurationFlags["wiimote_extension"].SelectValues[wiimote_extension].Value;

                if (playerIndex <= realWiimoteAmount)
                {
                    controllerMappings["default"].KeyMappings["SOURCE"] = "2"; //Real Wiimotes take precedence
                }
                else
                {
                    controllerMappings["default"].KeyMappings["SOURCE"] = "1"; //Emulated Wiimote
                }
            }

            if (deviceName.Equals(InputDeviceNames.KeyboardDevice, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] = "DInput/0/Keyboard Mouse";
                return this.CompileController(playerIndex, platformInfo, controllerDefinition, controllerTemplate,
                    gamepadAbstraction, inputTemplate, controllerMappings, gameInfo);
            }
            string xinputDevice = "XInput/{0}/Gamepad";
            string dintpuDevice = "DInput/{0}/{1}";
            if (deviceName.Equals(InputDeviceNames.XInputDevice1, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 0);
            }
            else if (deviceName.Equals(InputDeviceNames.XInputDevice2, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 1);
            }
            else if (deviceName.Equals(InputDeviceNames.XInputDevice3, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 2);
            }
            else if (deviceName.Equals(InputDeviceNames.XInputDevice4, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 3);
            }
            else if (devices.Select(device => device.DI_ProductName).Contains(deviceName))
            {
                var device = devices.First(d => d.DI_ProductName == deviceName);
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(dintpuDevice, device.DI_ProductName, device.DeviceIndex);
            }
            return this.CompileController(playerIndex, platformInfo, controllerDefinition, controllerTemplate, gamepadAbstraction, inputTemplate, controllerMappings, gameInfo);
        }
Esempio n. 11
0
 public virtual string CompileController(int playerIndex, IPlatformInfo platformInfo, IControllerDefinition controllerDefinition, IControllerTemplate controllerTemplate, IGamepadAbstraction gamepadAbstraction, IInputTemplate inputTemplate, IGameInfo gameInfo)
 {
     if (gamepadAbstraction.ProfileType == ControllerProfileType.NULL_PROFILE) return string.Empty;
     var controllerMappings = gamepadAbstraction.ProfileType == ControllerProfileType.KEYBOARD_PROFILE ?
         controllerTemplate.KeyboardControllerMappings : controllerTemplate.GamepadControllerMappings;
     return this.CompileController(playerIndex, platformInfo, controllerDefinition, controllerTemplate, gamepadAbstraction, inputTemplate, controllerMappings, gameInfo);
 }
		private string GetUrl(IControllerDefinition controller, string action)
		{
			var routeValues = new RouteValueDictionary();
			routeValues.Add("controller", controller.UrlName);
			routeValues.Add("action", action);

			if (controller.Type == ControllerType.WebApi)
				return _pathUtility.ToAbsolute(string.Format("~/api/proxy/{0}/{1}", controller.UrlName, action));
			else
				return _pathUtility.ToAbsolute(_pathUtility.GetVirtualPath(routeValues));
		}
Esempio n. 13
0
        public override string CompileController(int playerIndex, IPlatformInfo platformInfo, IControllerDefinition controllerDefinition, IControllerTemplate controllerTemplate, IGamepadAbstraction gamepadAbstraction, IInputTemplate inputTemplate, IReadOnlyDictionary <string, IControllerMapping> controllerMappings, IGameInfo gameInfo)
        {
            if (gamepadAbstraction.ProfileType == ControllerProfileType.NULL_PROFILE)
            {
                return(string.Empty);
            }
            var template = new StringBuilder(inputTemplate.StringTemplate);

            foreach (IControllerInput input in controllerDefinition.ControllerInputs.Values)
            {
                string templateKey   = controllerMappings["default"].InputMappings[input.InputName];
                string inputSetting  = gamepadAbstraction[input.GamepadAbstraction];
                string emulatorValue = gamepadAbstraction.ProfileType == ControllerProfileType.KEYBOARD_PROFILE ?
                                       inputTemplate.KeyboardMappings.First().Value[inputSetting] : inputTemplate.GamepadMappings.First().Value[inputSetting];
                template.Replace($"{{{templateKey}}}", emulatorValue);
            }

            if (platformInfo.PlatformID == StonePlatforms.NINTENDO_WII && controllerDefinition.ControllerID == "GCN_CONTROLLER")
            {
                template.Replace("{N}", (playerIndex - 4).ToString()); //Account for GCPad being in controller positions 5-8.
            }
            else
            {
                template.Replace("{N}", playerIndex.ToString()); //Player Index
            }

            foreach (string key in inputTemplate.TemplateKeys)
            {
                template.Replace($"{{{key}}}",
                                 controllerMappings["default"].KeyMappings.ContainsKey(key)
                        ? controllerMappings["default"].KeyMappings[key]
                        : inputTemplate.NoBind);
            }
            return(template.ToString());
        }
Esempio n. 14
0
        public override string CompileController(int playerIndex, IPlatformInfo platformInfo, IControllerDefinition controllerDefinition, IControllerTemplate controllerTemplate, IGamepadAbstraction gamepadAbstraction, IInputTemplate inputTemplate, IGameInfo gameInfo)
        {
            var controllerMappings = gamepadAbstraction.ProfileType == ControllerProfileType.KEYBOARD_PROFILE ?
                                     controllerTemplate.KeyboardControllerMappings : controllerTemplate.GamepadControllerMappings;

            string deviceName            = gamepadAbstraction.DeviceName;
            IList <IInputDevice> devices = new InputManager().GetGamepads();

            if (deviceName == null)
            {
                deviceName = String.Empty;
            }

            int realWiimoteAmount = devices.Count(device => device.DI_ProductName.Contains("RVL-CNT"));

            if (controllerDefinition.ControllerID == "WII_COMBINED_CONTROLLER")
            {
                //All wiimotes have the same attachment
                int wiimote_extension = this.ConfigurationFlagStore.GetValue(gameInfo, "wiimote_extension", ConfigurationFlagTypes.SELECT_FLAG);
                controllerMappings["default"].KeyMappings["EXTENSION"] = this.ConfigurationFlags["wiimote_extension"].SelectValues[wiimote_extension].Value;

                if (playerIndex <= realWiimoteAmount)
                {
                    controllerMappings["default"].KeyMappings["SOURCE"] = "2"; //Real Wiimotes take precedence
                }
                else
                {
                    controllerMappings["default"].KeyMappings["SOURCE"] = "1"; //Emulated Wiimote
                }
            }

            if (deviceName.Equals(InputDeviceNames.KeyboardDevice, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] = "DInput/0/Keyboard Mouse";
                return(this.CompileController(playerIndex, platformInfo, controllerDefinition, controllerTemplate,
                                              gamepadAbstraction, inputTemplate, controllerMappings, gameInfo));
            }
            string xinputDevice = "XInput/{0}/Gamepad";
            string dintpuDevice = "DInput/{0}/{1}";

            if (deviceName.Equals(InputDeviceNames.XInputDevice1, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 0);
            }
            else if (deviceName.Equals(InputDeviceNames.XInputDevice2, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 1);
            }
            else if (deviceName.Equals(InputDeviceNames.XInputDevice3, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 2);
            }
            else if (deviceName.Equals(InputDeviceNames.XInputDevice4, StringComparison.InvariantCultureIgnoreCase))
            {
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(xinputDevice, 3);
            }
            else if (devices.Select(device => device.DI_ProductName).Contains(deviceName))
            {
                var device = devices.First(d => d.DI_ProductName == deviceName);
                controllerMappings["default"].KeyMappings["DEVICE"] =
                    String.Format(dintpuDevice, device.DI_ProductName, device.DeviceIndex);
            }
            return(this.CompileController(playerIndex, platformInfo, controllerDefinition, controllerTemplate, gamepadAbstraction, inputTemplate, controllerMappings, gameInfo));
        }
        public override string CompileController(int playerIndex, IPlatformInfo platformInfo, IControllerDefinition controllerDefinition, IControllerTemplate controllerTemplate, IGamepadAbstraction gamepadAbstraction, IInputTemplate inputTemplate, IReadOnlyDictionary<string, IControllerMapping> controllerMappings, IGameInfo gameInfo)
        {
            if (gamepadAbstraction.ProfileType == ControllerProfileType.NULL_PROFILE) return string.Empty;
            var template = new StringBuilder(inputTemplate.StringTemplate);
            foreach (IControllerInput input in controllerDefinition.ControllerInputs.Values)
            {
                string templateKey = controllerMappings["default"].InputMappings[input.InputName];
                string inputSetting = gamepadAbstraction[input.GamepadAbstraction];
                string emulatorValue = gamepadAbstraction.ProfileType == ControllerProfileType.KEYBOARD_PROFILE ?
                    inputTemplate.KeyboardMappings.First().Value[inputSetting] : inputTemplate.GamepadMappings.First().Value[inputSetting];
                template.Replace($"{{{templateKey}}}", emulatorValue);
            }

            if (platformInfo.PlatformID == StonePlatforms.NINTENDO_WII && controllerDefinition.ControllerID == "GCN_CONTROLLER")
            {
                template.Replace("{N}", (playerIndex - 4).ToString()); //Account for GCPad being in controller positions 5-8.
            }
            else
            {
                template.Replace("{N}", playerIndex.ToString()); //Player Index
            }

            foreach (string key in inputTemplate.TemplateKeys)
            {
                template.Replace($"{{{key}}}",
                    controllerMappings["default"].KeyMappings.ContainsKey(key)
                        ? controllerMappings["default"].KeyMappings[key]
                        : inputTemplate.NoBind);
            }
            return template.ToString();
        }
        /* Win32 End */
        public override string CompileController(int playerIndex, IPlatformInfo platformInfo, IControllerDefinition controllerDefinition, IControllerTemplate controllerTemplate, IControllerProfile controllerProfile, IInputTemplate inputTemplate)
        {
            var controllerMappings = controllerProfile.ProfileType == ControllerProfileType.KEYBOARD_PROFILE ?
                                     controllerTemplate.KeyboardControllerMappings : controllerTemplate.GamepadControllerMappings;
            string deviceName            = this.CoreInstance.ControllerPortsDatabase.GetDeviceInPort(platformInfo, playerIndex);
            IList <IInputDevice> devices = new InputManager().GetGamepads();

            if (!devices.Select(device => device.DI_ProductName).Contains(deviceName) || !(devices.Where(device => device.XI_IsXInput).Count() == 0))
            { //todo fix this
                if (deviceName == InputDeviceNames.XInputDevice1)
                {
                    var xinputDevice = devices.Where(device => device.XI_IsXInput).Where(device => device.XI_GamepadIndex == 1).FirstOrDefault();
                    if (!xinputDevice.Equals(null))
                    {
                        controllerMappings["default"].KeyMappings["JOYPAD_INDEX"] = xinputDevice.DeviceIndex.ToString();
                    }
                }
                if (deviceName == InputDeviceNames.XInputDevice2)
                {
                    var xinputDevice = devices.Where(device => device.XI_IsXInput).Where(device => device.XI_GamepadIndex == 1).FirstOrDefault();
                    if (!xinputDevice.Equals(null))
                    {
                        controllerMappings["default"].KeyMappings["JOYPAD_INDEX"] = xinputDevice.DeviceIndex.ToString();
                    }
                }
                if (deviceName == InputDeviceNames.XInputDevice3)
                {
                    var xinputDevice = devices.Where(device => device.XI_IsXInput).Where(device => device.XI_GamepadIndex == 1).FirstOrDefault();
                    if (!xinputDevice.Equals(null))
                    {
                        controllerMappings["default"].KeyMappings["JOYPAD_INDEX"] = xinputDevice.DeviceIndex.ToString();
                    }
                }
                if (deviceName == InputDeviceNames.XInputDevice4)
                {
                    var xinputDevice = devices.Where(device => device.XI_IsXInput).Where(device => device.XI_GamepadIndex == 1).FirstOrDefault();
                    if (!xinputDevice.Equals(null))
                    {
                        controllerMappings["default"].KeyMappings["JOYPAD_INDEX"] = xinputDevice.DeviceIndex.ToString();
                    }
                }
                if (devices.Select(device => device.DI_ProductName).Contains(deviceName))
                {
                    controllerMappings["default"].KeyMappings["JOYPAD_INDEX"] = devices.Where(device => device.DI_ProductName == deviceName).First().DeviceIndex.ToString();
                }
            }
            else
            {
                controllerProfile  = controllerDefinition.ProfileStore[InputDeviceNames.KeyboardDevice];
                controllerMappings = controllerTemplate.KeyboardControllerMappings;
                playerIndex        = 1; //Force Keyboard player 1 if no controllers detected
            }
            return(base.CompileController(playerIndex, platformInfo, controllerDefinition, controllerTemplate, controllerProfile, inputTemplate, controllerMappings));
        }
Esempio n. 17
0
        public virtual string CompileController(int playerIndex, IPlatformInfo platformInfo, IControllerDefinition controllerDefinition, IControllerTemplate controllerTemplate, IGamepadAbstraction gamepadAbstraction, IInputTemplate inputTemplate, IReadOnlyDictionary<string, IControllerMapping> controllerMappings, IGameInfo gameInfo)
        {
            if (gamepadAbstraction.ProfileType == ControllerProfileType.NULL_PROFILE) return string.Empty;
            var template = new StringBuilder(inputTemplate.StringTemplate);
            foreach (IControllerInput input in controllerDefinition.ControllerInputs.Values)
            {
                string templateKey = controllerMappings["default"].InputMappings[input.InputName];
                string inputSetting = gamepadAbstraction[input.GamepadAbstraction];
                string emulatorValue = gamepadAbstraction.ProfileType == ControllerProfileType.KEYBOARD_PROFILE ?
                    inputTemplate.KeyboardMappings.First().Value[inputSetting] : inputTemplate.GamepadMappings.First().Value[inputSetting];
                template.Replace($"{{{templateKey}}}", emulatorValue);
            }

            foreach (var key in inputTemplate.TemplateKeys)
            {
                template.Replace("{N}", playerIndex.ToString()); //Player Index
                if (controllerMappings["default"].KeyMappings.ContainsKey(key))
                {
                    template.Replace($"{{{key}}}", controllerMappings["default"].KeyMappings[key]); //Non-input keys
                }
                else
                {
                    template.Replace($"{{{key}}}", inputTemplate.NoBind); //Non-input keys
                }
            }
            return template.ToString();
        }
 protected AbstractControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
 {
     Device     = device;
     Definition = definition;
 }
Esempio n. 19
0
 public RiingTrioControllerProxy(IHidDeviceProxy device, IControllerDefinition definition)
     : base(device, definition)
 {
 }