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:
parent
92e0865b3f
commit
75d4ff5117
|
@ -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());
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -4,6 +4,6 @@ namespace BizHawk.Client.EmuHawk
|
|||
{
|
||||
public interface IVirtualPadSchema
|
||||
{
|
||||
IEnumerable<VirtualPad> GetPads();
|
||||
IEnumerable<PadSchema> GetPadSchemas();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
|
@ -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)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue