using System.Collections.Generic; using System.Drawing; using System.Windows.Forms; namespace BizHawk.Client.EmuHawk { public class PadSchema { public enum PadInputType { Boolean, // A single on/off button AnalogStick, // An analog stick X,Y Pair FloatSingle, // A single analog button (pressure sensitive button for instance) TargetedPair, // A X,Y pair intended to be a screen cooridnate (for zappers, mouse, stylus, etc) DiscManager } // Default size of the pad public Size DefaultSize { get; set; } public Size? MaxSize { get; set; } public bool IsConsole { get; set; } public IEnumerable Buttons { get; set; } public string DisplayName { get; set; } // The name of the pad itself, presumably will be displayed by the given pad time if supplied public class ButtonSchema { public string Name { get; set; } public string DisplayName { get; set; } public PadInputType Type { get; set; } public Point Location { get; set; } public Bitmap Icon { get; set; } public Size TargetSize { get; set; } // Specifically for TargetedPair, specifies the screen size public string[] SecondaryNames { get; set; } // Any other buttons necessary to operate (such as the Y axis) public int MaxValue { get; set; } // For non-boolean values, specifies the maximum value the button allows public int MidValue { get; set; } // For non-boolean values, specifies the mid (zero) value for the button public int MinValue { get; set; } // For non-boolean values, specifies the minimum value the button allows public int MaxValueSec { get; set; } public int MidValueSec { get; set; } public int MinValueSec { get; set; } public object OwnerEmulator { get; set; } public Orientation Orientation { get; set; } // For Single Flaot controls } } }