playernumber stuff: This is all medium whack

This commit is contained in:
nattthebear 2017-06-11 10:49:22 -04:00
parent 5406da7406
commit cf608bfca9
1 changed files with 11 additions and 10 deletions

View File

@ -165,7 +165,8 @@ namespace BizHawk.Emulation.Common
List<string> list = new List<string>(FloatControls);
list.AddRange(BoolButtons);
List<string>[] ret = new List<string>[9];
// starts with console buttons, then each plasyer's buttons individually
List<string>[] ret = new List<string>[PlayerCount + 1];
for (int i = 0; i < ret.Length; i++)
{
ret[i] = new List<string>();
@ -182,16 +183,18 @@ namespace BizHawk.Emulation.Common
public int PlayerNumber(string buttonName)
{
int player = 0;
if (buttonName.Length > 3 && buttonName.StartsWith("P") && char.IsNumber(buttonName[1]))
var match = PlayerRegex.Match(buttonName);
if (match.Success)
{
player = buttonName[1] - '0';
return int.Parse(match.Groups[1].Value);
}
else
{
return 0;
}
return player;
}
private static readonly Regex PlayerRegex = new Regex("^P(\\d) ");
private static readonly Regex PlayerRegex = new Regex("^P(\\d+) ");
public int PlayerCount
{
@ -199,9 +202,7 @@ namespace BizHawk.Emulation.Common
{
var allNames = FloatControls.Concat(BoolButtons).ToList();
var player = allNames
.Select(s => PlayerRegex.Match(s).Groups[1])
.Where(group => group.Success)
.Select(group => group.Value[0] - '0')
.Select(PlayerNumber)
.DefaultIfEmpty(0)
.Max();