public static string ToShortString(this ControlSubTypeEnum subType) { switch (subType) { case ControlSubTypeEnum.Normal: return(""); case ControlSubTypeEnum.Inverted: return("I"); case ControlSubTypeEnum.Half: return("H"); case ControlSubTypeEnum.InvertedHalf: return("IH"); case ControlSubTypeEnum.HatUp: return("Up"); case ControlSubTypeEnum.HatDown: return("Down"); case ControlSubTypeEnum.HatLeft: return("Left"); case ControlSubTypeEnum.HatRight: return("Right"); default: throw new ArgumentException("Nonexistent subtype.", nameof(subType)); } }
byte Analog(ControlSubTypeEnum subType, byte num) { int p = analogs[num]; switch (subType) { case ControlSubTypeEnum.Normal: return (byte)(p / 256); case ControlSubTypeEnum.Inverted: return (byte)((65535 - p) / 256); case ControlSubTypeEnum.Half: int m = (p - 32767) / 129; if (m < 0) { m = 0; } return (byte)m; case ControlSubTypeEnum.InvertedHalf: m = (p - 32767) / 129; if (-m < 0) { m = 0; } return (byte)-m; } return 0; }
public ControlMapping(ControlTypeEnum type = ControlTypeEnum.Disabled, ControlSubTypeEnum subType = ControlSubTypeEnum.Normal, byte inputIndex = 0, byte outputIndex = 0) { InputControl = new InputControl() { Type = type, SubType = subType, InputIndex = inputIndex }; OutputIndex = outputIndex; }
byte DPad(ControlSubTypeEnum subType, byte num) { int i = (int)toByte(getPov(num)[(int)subType-4]) * 255; return (byte)i; }
byte Button(ControlSubTypeEnum subType, byte num) { int i = (int)toByte(buttons[num]) * 255; return (byte)i; }