138 lines
3.3 KiB
C#
138 lines
3.3 KiB
C#
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
|
|
using BizHawk.Emulation.Common;
|
|
|
|
namespace BizHawk.Client.EmuHawk
|
|
{
|
|
[Schema("GB")]
|
|
// ReSharper disable once UnusedMember.Global
|
|
public class GbSchema : IVirtualPadSchema
|
|
{
|
|
public virtual IEnumerable<PadSchema> GetPadSchemas(IEmulator core)
|
|
{
|
|
switch (core.ControllerDefinition.Name)
|
|
{
|
|
case "Gameboy Controller + Tilt":
|
|
yield return StandardControllerH(1);
|
|
yield return ConsoleButtonsH();
|
|
yield return TiltControls();
|
|
break;
|
|
case "Gameboy Controller H":
|
|
yield return StandardControllerH(1);
|
|
yield return ConsoleButtonsH();
|
|
break;
|
|
default:
|
|
yield return StandardController();
|
|
yield return ConsoleButtons();
|
|
break;
|
|
}
|
|
}
|
|
|
|
// Gambatte Controller
|
|
private static PadSchema StandardController()
|
|
{
|
|
return new PadSchema
|
|
{
|
|
Size = new Size(174, 79),
|
|
Buttons = new[]
|
|
{
|
|
ButtonSchema.Up(14, 12),
|
|
ButtonSchema.Down(14, 56),
|
|
ButtonSchema.Left(2, 34),
|
|
ButtonSchema.Right(24, 34),
|
|
new ButtonSchema(122, 34, "B"),
|
|
new ButtonSchema(146, 34, "A"),
|
|
new ButtonSchema(52, 34, "Select") { DisplayName = "s" },
|
|
new ButtonSchema(74, 34, "Start") { DisplayName = "S" }
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema ConsoleButtons()
|
|
{
|
|
return new ConsoleSchema
|
|
{
|
|
Size = new Size(75, 50),
|
|
Buttons = new[]
|
|
{
|
|
new ButtonSchema(10, 15, "Power")
|
|
}
|
|
};
|
|
}
|
|
|
|
// GBHawk controllers
|
|
protected static PadSchema StandardControllerH(int controller)
|
|
{
|
|
return new PadSchema
|
|
{
|
|
Size = new Size(174, 79),
|
|
Buttons = new[]
|
|
{
|
|
ButtonSchema.Up(14, 12, controller),
|
|
ButtonSchema.Down(14, 56, controller),
|
|
ButtonSchema.Left(2, 34, controller),
|
|
ButtonSchema.Right(24, 34, controller),
|
|
new ButtonSchema(122, 34, controller, "B"),
|
|
new ButtonSchema(146, 34, controller, "A"),
|
|
new ButtonSchema(52, 34, controller, "Select") { DisplayName = "s" },
|
|
new ButtonSchema(74, 34, controller, "Start") { DisplayName = "S" }
|
|
}
|
|
};
|
|
}
|
|
|
|
protected static PadSchema ConsoleButtonsH()
|
|
{
|
|
return new ConsoleSchema
|
|
{
|
|
Size = new Size(75, 50),
|
|
Buttons = new[]
|
|
{
|
|
new ButtonSchema(10, 15, "P1 Power") { DisplayName = "Power" }
|
|
}
|
|
};
|
|
}
|
|
|
|
private static PadSchema TiltControls()
|
|
{
|
|
return new PadSchema
|
|
{
|
|
DisplayName = "Tilt",
|
|
Size = new Size(356, 290),
|
|
Buttons = new[]
|
|
{
|
|
new TargetedPairSchema(14, 17, "P1 Tilt X")
|
|
{
|
|
TargetSize = new Size(256, 240)
|
|
}
|
|
}
|
|
};
|
|
}
|
|
}
|
|
|
|
[Schema("GB3x")]
|
|
public class Gb3XSchema : GbSchema
|
|
{
|
|
public override IEnumerable<PadSchema> GetPadSchemas(IEmulator core)
|
|
{
|
|
yield return StandardControllerH(1);
|
|
yield return StandardControllerH(2);
|
|
yield return StandardControllerH(3);
|
|
yield return ConsoleButtonsH();
|
|
}
|
|
}
|
|
|
|
[Schema("GB4x")]
|
|
public class Gb4XSchema : GbSchema
|
|
{
|
|
public override IEnumerable<PadSchema> GetPadSchemas(IEmulator core)
|
|
{
|
|
yield return StandardControllerH(1);
|
|
yield return StandardControllerH(2);
|
|
yield return StandardControllerH(3);
|
|
yield return StandardControllerH(4);
|
|
yield return ConsoleButtonsH();
|
|
}
|
|
}
|
|
}
|