Virtualpads - refactor schema objects to return a PadSchema collection instead of Virtualpad collection, and create the pads in the calling code

This commit is contained in:
adelikat 2014-06-27 17:02:46 +00:00
parent 92e0865b3f
commit 75d4ff5117
12 changed files with 60 additions and 86 deletions

View File

@ -92,7 +92,10 @@ namespace BizHawk.Client.EmuHawk
if (schemaType != null)
{
var pads = (Activator.CreateInstance(schemaType) as IVirtualPadSchema).GetPads() ?? Enumerable.Empty<VirtualPad>();
var pads = (Activator.CreateInstance(schemaType) as IVirtualPadSchema)
.GetPadSchemas()
.Select(s => new VirtualPad(s));
if (pads.Any())
{
ControllerBox.Controls.AddRange(pads.Reverse().ToArray());

View File

@ -9,12 +9,9 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("GBA")]
public class GBASchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
yield return new VirtualPad(StandardController(1))
{
Location = new Point(15, 15)
};
yield return StandardController(1);
}
public static PadSchema StandardController(int controller)
{

View File

@ -9,13 +9,11 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("GB")]
public class GBSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
yield return new VirtualPad(StandardController(1))
{
Location = new Point(15, 15)
};
yield return StandardController(1);
}
public static PadSchema StandardController(int controller)
{
return new PadSchema

View File

@ -10,31 +10,31 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("GEN")]
public class GenSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
var ss = (GPGX.GPGXSyncSettings)Global.Emulator.GetSyncSettings();
if (ss.ControlType == GPGX.ControlType.OnePlayer)
{
if (ss.UseSixButton)
{
yield return new VirtualPad(SixButtonController(1));
yield return SixButtonController(1);
}
else
{
yield return new VirtualPad(ThreeButtonController(2));
yield return ThreeButtonController(2);
}
}
else if (ss.ControlType == GPGX.ControlType.Normal)
{
if (ss.UseSixButton)
{
yield return new VirtualPad(SixButtonController(1));
yield return new VirtualPad(SixButtonController(2));
yield return SixButtonController(1);
yield return SixButtonController(2);
}
else
{
yield return new VirtualPad(ThreeButtonController(1));
yield return new VirtualPad(ThreeButtonController(2));
yield return ThreeButtonController(1);
yield return ThreeButtonController(2);
}
}
else

View File

@ -4,6 +4,6 @@ namespace BizHawk.Client.EmuHawk
{
public interface IVirtualPadSchema
{
IEnumerable<VirtualPad> GetPads();
IEnumerable<PadSchema> GetPadSchemas();
}
}

View File

@ -10,14 +10,14 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("N64")]
public class N64Schema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
var ss = (N64SyncSettings)Global.Emulator.GetSyncSettings();
for (int i = 0; i < 4; i++)
{
if (ss.Controllers[i].IsConnected)
{
yield return new VirtualPad(StandardController(i + 1));
yield return StandardController(i + 1);
}
}
}

View File

@ -12,7 +12,7 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("NES")]
public class NesSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
if (Global.Emulator is NES)
{
@ -21,8 +21,8 @@ namespace BizHawk.Client.EmuHawk
var isFds = core.BoardName == "FDS";
if (ss.Controls.Famicom)
{
yield return new VirtualPad(StandardController(1));
yield return new VirtualPad(Famicom2ndController());
yield return StandardController(1);
yield return Famicom2ndController();
switch (ss.Controls.FamicomExpPort)
{
@ -30,20 +30,20 @@ namespace BizHawk.Client.EmuHawk
case "UnpluggedFam":
break;
case "Zapper":
yield return new VirtualPad(Zapper(3));
yield return Zapper(3);
break;
case "ArkanoidFam":
yield return new VirtualPad(ArkanoidPaddle(3));
yield return ArkanoidPaddle(3);
break;
case "Famicom4P":
yield return new VirtualPad(StandardController(3));
yield return new VirtualPad(StandardController(4));
yield return StandardController(3);
yield return StandardController(4);
break;
case "FamilyBasicKeyboard":
yield return new VirtualPad(FamicomFamilyKeyboard(3));
yield return FamicomFamilyKeyboard(3);
break;
case "OekaKids":
yield return new VirtualPad(OekaKidsTablet(3));
yield return OekaKidsTablet(3);
break;
}
@ -57,24 +57,24 @@ namespace BizHawk.Client.EmuHawk
case "UnpluggedNES":
break;
case "ControllerNES":
yield return new VirtualPad(StandardController(1));
yield return StandardController(1);
currentControlerNo++;
break;
case "Zapper":
yield return new VirtualPad(Zapper(1));
yield return Zapper(1);
currentControlerNo++;
break;
case "ArkanoidNES":
yield return new VirtualPad(ArkanoidPaddle(1));
yield return ArkanoidPaddle(1);
currentControlerNo++;
break;
case "FourScore":
yield return new VirtualPad(StandardController(1));
yield return new VirtualPad(StandardController(2));
yield return StandardController(1);
yield return StandardController(2);
currentControlerNo += 2;
break;
case "PowerPad":
yield return new VirtualPad(PowerPad(1));
yield return PowerPad(1);
currentControlerNo++;
break;
}
@ -85,21 +85,21 @@ namespace BizHawk.Client.EmuHawk
case "UnpluggedNES":
break;
case "ControllerNES":
yield return new VirtualPad(StandardController(currentControlerNo));
yield return StandardController(currentControlerNo);
break;
case "Zapper":
yield return new VirtualPad(Zapper(currentControlerNo));
yield return Zapper(currentControlerNo);
break;
case "ArkanoidNES":
yield return new VirtualPad(ArkanoidPaddle(currentControlerNo));
yield return ArkanoidPaddle(currentControlerNo);
break;
case "FourScore":
yield return new VirtualPad(StandardController(currentControlerNo));
yield return new VirtualPad(StandardController(currentControlerNo + 1));
yield return StandardController(currentControlerNo);
yield return StandardController(currentControlerNo + 1);
currentControlerNo += 2;
break;
case "PowerPad":
yield return new VirtualPad(PowerPad(currentControlerNo));
yield return PowerPad(currentControlerNo);
break;
}
@ -111,18 +111,18 @@ namespace BizHawk.Client.EmuHawk
if (isFds)
{
yield return new VirtualPad(FdsConsoleButtons(core.ControllerDefinition.BoolButtons.Count(b => b.StartsWith("FDS Insert "))));
yield return FdsConsoleButtons(core.ControllerDefinition.BoolButtons.Count(b => b.StartsWith("FDS Insert ")));
}
else
{
yield return new VirtualPad(NesConsoleButtons());
yield return NesConsoleButtons();
}
}
else // Quicknes only supports 2 controllers and no other configuration
{
yield return new VirtualPad(StandardController(1));
yield return new VirtualPad(StandardController(2));
yield return new VirtualPad(NesConsoleButtons());
yield return StandardController(1);
yield return StandardController(2);
yield return NesConsoleButtons();
}
}

View File

@ -9,17 +9,10 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("PCE")]
public class PceSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
yield return new VirtualPad(StandardController(1))
{
Location = new Point(15, 15)
};
yield return new VirtualPad(StandardController(2))
{
Location = new Point(200, 15)
};
yield return StandardController(1);
yield return StandardController(2);
}
public static PadSchema StandardController(int controller)

View File

@ -9,17 +9,10 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("SAT")]
public class SaturnSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
yield return new VirtualPad(StandardController(1))
{
Location = new Point(15, 15)
};
yield return new VirtualPad(StandardController(2))
{
Location = new Point(200, 15)
};
yield return StandardController(1);
yield return StandardController(2);
}
public static PadSchema StandardController(int controller)
{

View File

@ -10,16 +10,16 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("SMS")]
public class SmsSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
if ((Global.Emulator as SMS).IsGameGear)
{
yield return new VirtualPad(GGController(1));
yield return GGController(1);
}
else
{
yield return new VirtualPad(StandardController(1));
yield return new VirtualPad(StandardController(2));
yield return StandardController(1);
yield return StandardController(2);
}
}

View File

@ -9,17 +9,10 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("SNES")]
public class SnesSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
yield return new VirtualPad(StandardController(1))
{
Location = new Point(15, 15)
};
yield return new VirtualPad(StandardController(2))
{
Location = new Point(200, 15)
};
yield return StandardController(1);
yield return StandardController(2);
}
public static PadSchema StandardController(int controller)
{

View File

@ -9,12 +9,9 @@ namespace BizHawk.Client.EmuHawk
[SchemaAttributes("WSWAN")]
public class WonderSwanSchema : IVirtualPadSchema
{
public IEnumerable<VirtualPad> GetPads()
public IEnumerable<PadSchema> GetPadSchemas()
{
yield return new VirtualPad(StandardController(1))
{
Location = new Point(15, 15)
};
yield return StandardController(1);
}
public static PadSchema StandardController(int controller)
{