Saturn - start virtualpad support - multitap logic in place, only standard controllers currently

This commit is contained in:
adelikat 2017-06-11 09:35:03 -05:00
parent 6ab1d74a0d
commit 5406da7406
1 changed files with 47 additions and 3 deletions

View File

@ -1,7 +1,9 @@
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using BizHawk.Emulation.Common;
using BizHawk.Emulation.Cores.Consoles.Sega.Saturn;
namespace BizHawk.Client.EmuHawk
{
@ -10,9 +12,51 @@ namespace BizHawk.Client.EmuHawk
{
public IEnumerable<PadSchema> GetPadSchemas(IEmulator core)
{
yield return StandardController(1);
yield return StandardController(2);
yield return ConsoleButtons();
var ss = ((Saturnus)core).GetSyncSettings();
int totalPorts = (ss.Port1Multitap ? 6 : 1) + (ss.Port2Multitap ? 6 : 1);
var padSchemas = new SaturnusControllerDeck.Device[]
{
ss.Port1,
ss.Port2,
ss.Port3,
ss.Port4,
ss.Port5,
ss.Port6,
ss.Port7,
ss.Port8,
ss.Port9,
ss.Port10,
ss.Port11,
ss.Port12
}.Take(totalPorts)
.Where(p => p != SaturnusControllerDeck.Device.None)
.Select((p, i) => GenerateSchemaForPort(p, i + 1))
.Where(s => s != null)
.Concat(new[] { ConsoleButtons() });
return padSchemas;
}
private static PadSchema GenerateSchemaForPort(SaturnusControllerDeck.Device device, int controllerNum)
{
switch (device)
{
default:
case SaturnusControllerDeck.Device.None:
return null;
case SaturnusControllerDeck.Device.Gamepad:
return StandardController(controllerNum);
case SaturnusControllerDeck.Device.ThreeDeePad:
case SaturnusControllerDeck.Device.Mission:
case SaturnusControllerDeck.Device.DualMission:
case SaturnusControllerDeck.Device.Wheel:
case SaturnusControllerDeck.Device.Keyboard:
case SaturnusControllerDeck.Device.Mouse:
System.Windows.Forms.MessageBox.Show("This peripheral is not supported yet");
return null;
}
}
private static PadSchema StandardController(int controller)