public void ChangeBinding(string button, KeyCode value, InputChanger changer) { if (changer) { Buttons[button] = value; } }
public void initInputControls(IniData data, ref short[] initialResults) { chgContext = new ChangerContext(); resetResults(ref initialResults); //------------------------------------------------ throttleCurveChanger = new MultiRangeChanger( new RangeMapping { minFrom = 0, maxFrom = 255, minTo = 0, maxTo = 255 }, 7, new int[] { // quick and ugly int.Parse(data["THROTTLE"]["t0"]), int.Parse(data["THROTTLE"]["t1"]), int.Parse(data["THROTTLE"]["t2"]), int.Parse(data["THROTTLE"]["t3"]), int.Parse(data["THROTTLE"]["t4"]), int.Parse(data["THROTTLE"]["t5"]), int.Parse(data["THROTTLE"]["t6"]) } ); ThrottleHardLimitChanger = new LimiterChanger(int.Parse(data["SPEED"]["min"]), int.Parse(data["SPEED"]["max"]) ); throttleLimitChanger = new MultiRangeChanger(new[] { new MapRangeChanger(new RangeMapping { minFrom = 0, maxFrom = 127, minTo = ThrottleHardLimitChanger.Min, maxTo = 127 }), new MapRangeChanger(new RangeMapping { minFrom = 128, maxFrom = 255, minTo = 128, maxTo = ThrottleHardLimitChanger.Max }) }); SteerHardLimitChanger = new LimiterChanger(0, 255); brakeChanger = new BrakeChanger(126, int.Parse(data["BRAKE"]["previousMotionThreshold"]), int.Parse(data["BRAKE"]["reversePreviousMotionThreshold"]), int.Parse(data["BRAKE"]["cycles"])); //------------------------------------------------ centrR = new MyRect(0, 0, int.Parse(data["CENTER"]["w"]), int.Parse(data["CENTER"]["h"])); bordrR = new MyRect(int.Parse(data["BORDER"]["x"]), int.Parse(data["BORDER"]["y"]), int.Parse(data["BORDER"]["w"]), int.Parse(data["BORDER"]["h"])); deadZoneR = new MyRect(0, 0, bordrR.w - 2 * int.Parse(data["DEADZONE"]["x"]), bordrR.h - 2 * int.Parse(data["DEADZONE"]["y"])); setArmed(false); // TODO make configurable. Reason: poor quality of cheap gamepads gamepadRangeMapping = new RangeMapping { minFrom = -65535, maxFrom = 65535, minTo = 0, maxTo = 255 }; chgInputSteer = new InputChanger(); chgSteer = chgInputSteer //.Chain(new MapRangeChanger(gamepadRangeMapping)) .Chain(SteerHardLimitChanger) ; chgInputThrottle = new InputChanger(); chgThrottle = chgInputThrottle //.Chain(new MapRangeChanger(gamepadRangeMapping)) .Chain(throttleCurveChanger) .Chain(throttleLimitChanger) .Chain(ThrottleHardLimitChanger) .Chain(new ThrottleStatisticChanger(20)) .Chain(brakeChanger) ; }