Controller Config - hook up atari console buttons mostly, still one thing to fix up, currently crashes when trying to save

This commit is contained in:
andres.delikat 2012-03-30 22:03:08 +00:00
parent 724fe704fc
commit e4acb65ed1
1 changed files with 60 additions and 23 deletions

View File

@ -23,6 +23,7 @@ namespace BizHawk.MultiClient
public static readonly Dictionary<string, string[]> CONTROLS = new Dictionary<string, string[]>() public static readonly Dictionary<string, string[]> CONTROLS = new Dictionary<string, string[]>()
{ {
{"Atari", new string[5] { "Up", "Down", "Left", "Right", "Button" } }, {"Atari", new string[5] { "Up", "Down", "Left", "Right", "Button" } },
{"AtariConsoleButtons", new string[2] { "Reset", "Select" } },
{"Gameboy", new string[8] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start" } }, {"Gameboy", new string[8] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start" } },
{"NES", new string[8] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start" } }, {"NES", new string[8] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start" } },
{"PC Engine / SuperGrafx", new string[8] { "Up", "Down", "Left", "Right", "I", "II", "Run", "Select" } }, {"PC Engine / SuperGrafx", new string[8] { "Up", "Down", "Left", "Right", "I", "II", "Run", "Select" } },
@ -134,32 +135,46 @@ namespace BizHawk.MultiClient
} }
mainController = controller; mainController = controller;
int jpad = this.ControllComboBox.SelectedIndex; int jpad = this.ControllComboBox.SelectedIndex;
if (jpad >= PADS[platform]) if (jpad >= PADS[platform] * 2) //Not joypad or auto-joypad, must be special category (adelikat: I know this is hacky but so is the rest of this file)
{ {
jpad -= PADS[platform]; switch (platform)
controller = autoController; {
case "Atari":
IDX_CONTROLLERENABLED.Checked = Global.Config.Atari2600ConsoleButtons[0].Enabled;
controller = Global.Config.Atari2600ConsoleButtons;
break;
}
platform += "ConsoleButtons";
} }
switch (platform) else
{ {
case "Atari": if (jpad >= PADS[platform])
IDX_CONTROLLERENABLED.Checked = ((Atari2600ControllerTemplate)mainController[jpad]).Enabled; {
break; jpad -= PADS[platform];
case "Gameboy": controller = autoController;
case "NES": }
IDX_CONTROLLERENABLED.Checked = ((NESControllerTemplate)mainController[jpad]).Enabled; switch (platform)
break; {
case "PC Engine / SuperGrafx": case "Atari":
IDX_CONTROLLERENABLED.Checked = ((PCEControllerTemplate)mainController[jpad]).Enabled; IDX_CONTROLLERENABLED.Checked = ((Atari2600ControllerTemplate)mainController[jpad]).Enabled;
break; break;
case "Sega Genesis": case "Gameboy":
IDX_CONTROLLERENABLED.Checked = ((GenControllerTemplate)mainController[jpad]).Enabled; case "NES":
break; IDX_CONTROLLERENABLED.Checked = ((NESControllerTemplate)mainController[jpad]).Enabled;
case "SMS / GG / SG-1000": break;
IDX_CONTROLLERENABLED.Checked = ((SMSControllerTemplate)mainController[jpad]).Enabled; case "PC Engine / SuperGrafx":
break; IDX_CONTROLLERENABLED.Checked = ((PCEControllerTemplate)mainController[jpad]).Enabled;
case "TI-83": break;
IDX_CONTROLLERENABLED.Checked = ((TI83ControllerTemplate)mainController[jpad]).Enabled; case "Sega Genesis":
break; IDX_CONTROLLERENABLED.Checked = ((GenControllerTemplate)mainController[jpad]).Enabled;
break;
case "SMS / GG / SG-1000":
IDX_CONTROLLERENABLED.Checked = ((SMSControllerTemplate)mainController[jpad]).Enabled;
break;
case "TI-83":
IDX_CONTROLLERENABLED.Checked = ((TI83ControllerTemplate)mainController[jpad]).Enabled;
break;
}
} }
Labels.Clear(); Labels.Clear();
TextBoxes.Clear(); TextBoxes.Clear();
@ -180,6 +195,10 @@ namespace BizHawk.MultiClient
string fieldName = CONTROLS[platform][button]; string fieldName = CONTROLS[platform][button];
switch (platform) switch (platform)
{ {
case "AtariConsoleButtons":
Atari2600ConsoleButtonsTemplate o = (Atari2600ConsoleButtonsTemplate)controller[0];
field = o.GetType().GetField(fieldName).GetValue(o);
break;
case "Atari": case "Atari":
{ {
Atari2600ControllerTemplate obj = (Atari2600ControllerTemplate)controller[jpad]; Atari2600ControllerTemplate obj = (Atari2600ControllerTemplate)controller[jpad];
@ -240,12 +259,17 @@ namespace BizHawk.MultiClient
private void Update(int prev, string platform) private void Update(int prev, string platform)
{ {
if (platform == "Atari" && prev == 4) //adelikat: very hacky I know
platform += "ConsoleButtons";
ButtonsGroupBox.Controls.Clear(); ButtonsGroupBox.Controls.Clear();
object[] controller = null; object[] controller = null;
object[] mainController = null; object[] mainController = null;
object[] autoController = null; object[] autoController = null;
switch (platform) switch (platform)
{ {
case "AtariConsoleButtons":
controller = Global.Config.Atari2600ConsoleButtons;
break;
case "Atari": case "Atari":
controller = Global.Config.Atari2600Controller; controller = Global.Config.Atari2600Controller;
autoController = Global.Config.Atari2600AutoController; autoController = Global.Config.Atari2600AutoController;
@ -311,6 +335,12 @@ namespace BizHawk.MultiClient
string fieldName = CONTROLS[platform][button]; string fieldName = CONTROLS[platform][button];
switch (platform) switch (platform)
{ {
case "AtariConsoleButtons":
Atari2600ConsoleButtonsTemplate o = (Atari2600ConsoleButtonsTemplate)controller[0];
FieldInfo buttonF = o.GetType().GetField(fieldName);
field = buttonF.GetValue(o);
buttonF.SetValue(o, AppendButtonMapping(TempBox.Text, (string)field));
break;
case "Atari": case "Atari":
{ {
Atari2600ControllerTemplate obj = (Atari2600ControllerTemplate)controller[prev]; Atari2600ControllerTemplate obj = (Atari2600ControllerTemplate)controller[prev];
@ -372,6 +402,9 @@ namespace BizHawk.MultiClient
Label TempLabel = Labels[button] as Label; Label TempLabel = Labels[button] as Label;
TempLabel.Dispose(); TempLabel.Dispose();
} }
/*hacky add atari controller stuff*/
} }
private void InputConfig_Load(object sender, EventArgs e) private void InputConfig_Load(object sender, EventArgs e)
@ -445,6 +478,10 @@ namespace BizHawk.MultiClient
if (this.SystemComboBox.SelectedItem.ToString() != "TI-83") if (this.SystemComboBox.SelectedItem.ToString() != "TI-83")
ControllComboBox.Items.Add(string.Format("Autofire Joypad {0}", i + 1)); ControllComboBox.Items.Add(string.Format("Autofire Joypad {0}", i + 1));
} }
if (this.SystemComboBox.SelectedItem.ToString() == "Atari")
{
ControllComboBox.Items.Add("Console");
}
ControllComboBox.SelectedIndex = 0; ControllComboBox.SelectedIndex = 0;
CurSelectConsole = this.SystemComboBox.SelectedItem.ToString(); CurSelectConsole = this.SystemComboBox.SelectedItem.ToString();
CurSelectController = 0; CurSelectController = 0;