Converting merges one at a time...here's SMS.

-Because of Reset and Pause being separate from everything else, I had to code a special condition for these.
-Line count: 1081.
This commit is contained in:
brandman211 2012-03-25 01:32:44 +00:00
parent 8686cc87ff
commit 1d21a89f3a
1 changed files with 68 additions and 134 deletions

View File

@ -19,7 +19,6 @@ namespace BizHawk.MultiClient
int prevWidth;
int prevHeight;
const string ControllerStr = "Configure Controllers - ";
public static string[] SMSControlList = new string[] { "Up", "Down", "Left", "Right", "B1", "B2", "Pause", "Reset" };
public static string[] PCEControlList = new string[] { "Up", "Down", "Left", "Right", "I", "II", "Run", "Select" };
public static string[] GenesisControlList = new string[] { "Up", "Down", "Left", "Right", "A", "B", "C", "Start", };
public static string[] NESControlList = new string[] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start" };
@ -32,7 +31,7 @@ namespace BizHawk.MultiClient
{"Genesis 3-Button", new string[8] { "Up", "Down", "Left", "Right", "A", "B", "C", "Start", } },
{"NES", new string[8] { "Up", "Down", "Left", "Right", "A", "B", "Select", "Start" } },
{"PC Engine", new string[8] { "Up", "Down", "Left", "Right", "I", "II", "Run", "Select" } },
{"SMS", new string[8] { "Up", "Down", "Left", "Right", "B1", "B2", "Pause", "Reset" } },
{"SMS / GG / SG-1000", new string[8] { "Up", "Down", "Left", "Right", "B1", "B2", "Pause", "Reset" } },
{
// TODO: display shift / alpha names too, Also order these like on the calculator
"TI83", new string[50] { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", ".", "ON",
@ -41,6 +40,10 @@ namespace BizHawk.MultiClient
"TRACE", "ZOOM", "WINDOW", "Y", "2nd", "MODE", "Del", ",", "SIN" }
}
};
public static readonly Dictionary<string, int> PADS = new Dictionary<string, int>()
{
{"NES", 4}, {"SMS / GG / SG-1000", 2}
};
public static string[] AtariControlList = new string[] { "Up", "Down", "Left", "Right", "Button" };
private ArrayList Labels;
private ArrayList TextBoxes;
@ -181,128 +184,6 @@ namespace BizHawk.MultiClient
}
}
private void DoSMS()
{
Label TempLabel;
InputWidget TempTextBox;
this.Text = ControllerStr + "SMS / GG / SG-1000";
ControllerImage.Image = BizHawk.MultiClient.Properties.Resources.SMSController;
int jpad = this.ControllComboBox.SelectedIndex;
string[] ButtonMappings = new string[SMSControlList.Length];
if (jpad < 2)
{
ButtonMappings[0] = Global.Config.SMSController[jpad].Up;
ButtonMappings[1] = Global.Config.SMSController[jpad].Down;
ButtonMappings[2] = Global.Config.SMSController[jpad].Left;
ButtonMappings[3] = Global.Config.SMSController[jpad].Right;
ButtonMappings[4] = Global.Config.SMSController[jpad].B1;
ButtonMappings[5] = Global.Config.SMSController[jpad].B2;
ButtonMappings[6] = Global.Config.SmsPause;
ButtonMappings[7] = Global.Config.SmsReset;
IDX_CONTROLLERENABLED.Checked = Global.Config.SMSController[jpad].Enabled;
}
else
{
ButtonMappings[0] = Global.Config.SMSAutoController[jpad - 2].Up;
ButtonMappings[1] = Global.Config.SMSAutoController[jpad - 2].Down;
ButtonMappings[2] = Global.Config.SMSAutoController[jpad - 2].Left;
ButtonMappings[3] = Global.Config.SMSAutoController[jpad - 2].Right;
ButtonMappings[4] = Global.Config.SMSAutoController[jpad - 2].B1;
ButtonMappings[5] = Global.Config.SMSAutoController[jpad - 2].B2;
ButtonMappings[6] = Global.Config.SmsPause;
ButtonMappings[7] = Global.Config.SmsReset;
IDX_CONTROLLERENABLED.Checked = Global.Config.SMSController[jpad - 2].Enabled;
}
Changed = true;
Labels.Clear();
TextBoxes.Clear();
for (int i = 0; i < SMSControlList.Length; i++)
{
TempLabel = new Label();
TempLabel.Text = SMSControlList[i];
TempLabel.Location = new Point(8, 20 + (i * 24));
Labels.Add(TempLabel);
TempTextBox = new InputWidget();
TempTextBox.Location = new Point(48, 20 + (i * 24));
TextBoxes.Add(TempTextBox);
TempTextBox.SetBindings(ButtonMappings[i]);
ButtonsGroupBox.Controls.Add(TempTextBox);
ButtonsGroupBox.Controls.Add(TempLabel);
}
Changed = true;
}
private void UpdateSMS(int prev)
{
ButtonsGroupBox.Controls.Clear();
InputWidget TempBox;
Label TempLabel;
if (prev < 2)
{
TempBox = TextBoxes[0] as InputWidget;
Global.Config.SMSController[prev].Up = AppendButtonMapping(TempBox.Text, Global.Config.SMSController[prev].Up);
TempBox.Dispose();
TempBox = TextBoxes[1] as InputWidget;
Global.Config.SMSController[prev].Down = AppendButtonMapping(TempBox.Text, Global.Config.SMSController[prev].Down);
TempBox.Dispose();
TempBox = TextBoxes[2] as InputWidget;
Global.Config.SMSController[prev].Left = AppendButtonMapping(TempBox.Text, Global.Config.SMSController[prev].Left);
TempBox.Dispose();
TempBox = TextBoxes[3] as InputWidget;
Global.Config.SMSController[prev].Right = AppendButtonMapping(TempBox.Text, Global.Config.SMSController[prev].Right);
TempBox.Dispose();
TempBox = TextBoxes[4] as InputWidget;
Global.Config.SMSController[prev].B1 = AppendButtonMapping(TempBox.Text, Global.Config.SMSController[prev].B1);
TempBox.Dispose();
TempBox = TextBoxes[5] as InputWidget;
Global.Config.SMSController[prev].B2 = AppendButtonMapping(TempBox.Text, Global.Config.SMSController[prev].B2);
TempBox.Dispose();
TempBox = TextBoxes[6] as InputWidget;
Global.Config.SmsPause = AppendButtonMapping(TempBox.Text, Global.Config.SmsPause);
TempBox.Dispose();
TempBox = TextBoxes[7] as InputWidget;
Global.Config.SmsReset = AppendButtonMapping(TempBox.Text, Global.Config.SmsReset);
Global.Config.SMSController[prev].Enabled = IDX_CONTROLLERENABLED.Checked;
}
else
{
TempBox = TextBoxes[0] as InputWidget;
Global.Config.SMSAutoController[prev - 2].Up = AppendButtonMapping(TempBox.Text, Global.Config.SMSAutoController[prev - 2].Up);
TempBox.Dispose();
TempBox = TextBoxes[1] as InputWidget;
Global.Config.SMSAutoController[prev - 2].Down = AppendButtonMapping(TempBox.Text, Global.Config.SMSAutoController[prev - 2].Down);
TempBox.Dispose();
TempBox = TextBoxes[2] as InputWidget;
Global.Config.SMSAutoController[prev - 2].Left = AppendButtonMapping(TempBox.Text, Global.Config.SMSAutoController[prev - 2].Left);
TempBox.Dispose();
TempBox = TextBoxes[3] as InputWidget;
Global.Config.SMSAutoController[prev - 2].Right = AppendButtonMapping(TempBox.Text, Global.Config.SMSAutoController[prev - 2].Right);
TempBox.Dispose();
TempBox = TextBoxes[4] as InputWidget;
Global.Config.SMSAutoController[prev - 2].B1 = AppendButtonMapping(TempBox.Text, Global.Config.SMSAutoController[prev - 2].B1);
TempBox.Dispose();
TempBox = TextBoxes[5] as InputWidget;
Global.Config.SMSAutoController[prev - 2].B2 = AppendButtonMapping(TempBox.Text, Global.Config.SMSAutoController[prev - 2].B2);
TempBox.Dispose();
TempBox = TextBoxes[6] as InputWidget;
Global.Config.SmsPause = AppendButtonMapping(TempBox.Text, Global.Config.SmsPause);
TempBox.Dispose();
TempBox = TextBoxes[7] as InputWidget;
Global.Config.SmsReset = AppendButtonMapping(TempBox.Text, Global.Config.SmsReset);
Global.Config.SMSController[prev - 2].Enabled = IDX_CONTROLLERENABLED.Checked;
}
TempBox.Dispose();
for (int i = 0; i < SMSControlList.Length; i++)
{
TempLabel = Labels[i] as Label;
TempLabel.Dispose();
}
}
private void DoPCE()
{
Label TempLabel;
@ -864,13 +745,19 @@ namespace BizHawk.MultiClient
mainController = controller;
autoController = Global.Config.NESAutoController;
break;
case "SMS / GG / SG-1000":
ControllerImage.Image = BizHawk.MultiClient.Properties.Resources.SMSController;
controller = Global.Config.SMSController;
mainController = controller;
autoController = Global.Config.SMSAutoController;
break;
default:
return;
}
int jpad = this.ControllComboBox.SelectedIndex;
if (jpad >= Global.PLAYERS[platform + " Controller"])
if (jpad >= PADS[platform])
{
jpad -= Global.PLAYERS[platform + " Controller"];
jpad -= PADS[platform];
controller = autoController;
}
switch (platform)
@ -878,6 +765,9 @@ namespace BizHawk.MultiClient
case "NES":
IDX_CONTROLLERENABLED.Checked = ((NESControllerTemplate)mainController[jpad]).Enabled;
break;
case "SMS / GG / SG-1000":
IDX_CONTROLLERENABLED.Checked = ((SMSControllerTemplate)mainController[jpad]).Enabled;
break;
}
Labels.Clear();
TextBoxes.Clear();
@ -895,9 +785,24 @@ namespace BizHawk.MultiClient
switch (platform)
{
case "NES":
{
NESControllerTemplate obj = (NESControllerTemplate)controller[jpad];
field = obj.GetType().GetField(fieldName).GetValue(obj);
break;
}
case "SMS / GG / SG-1000":
{
if (button < 6)
{
SMSControllerTemplate obj = (SMSControllerTemplate)controller[jpad];
field = obj.GetType().GetField(fieldName).GetValue(obj);
}
else if (button == 6)
field = Global.Config.SmsPause;
else
field = Global.Config.SmsReset;
break;
}
}
TempTextBox.SetBindings((string)field);
ButtonsGroupBox.Controls.Add(TempTextBox);
@ -915,20 +820,32 @@ namespace BizHawk.MultiClient
switch (platform)
{
case "NES":
ControllerImage.Image = BizHawk.MultiClient.Properties.Resources.NESController;
controller = Global.Config.NESController;
mainController = controller;
autoController = Global.Config.NESAutoController;
break;
case "SMS / GG / SG-1000":
controller = Global.Config.SMSController;
mainController = controller;
autoController = Global.Config.SMSAutoController;
break;
default:
return;
}
if (prev >= Global.PLAYERS[platform + " Controller"])
if (prev >= PADS[platform])
{
prev -= Global.PLAYERS[platform + " Controller"];
prev -= PADS[platform];
controller = autoController;
}
Global.Config.NESController[prev].Enabled = IDX_CONTROLLERENABLED.Checked;
switch (platform)
{
case "NES":
((NESControllerTemplate)mainController[prev]).Enabled = IDX_CONTROLLERENABLED.Checked;
break;
case "SMS / GG / SG-1000":
((SMSControllerTemplate)mainController[prev]).Enabled = IDX_CONTROLLERENABLED.Checked;
break;
}
for (int button = 0; button < CONTROLS[platform].Length; button++)
{
InputWidget TempBox = TextBoxes[button] as InputWidget;
@ -937,11 +854,28 @@ namespace BizHawk.MultiClient
switch (platform)
{
case "NES":
{
NESControllerTemplate obj = (NESControllerTemplate)controller[prev];
FieldInfo buttonField = obj.GetType().GetField(fieldName);
field = buttonField.GetValue(obj);
buttonField.SetValue(obj, AppendButtonMapping(TempBox.Text, (string)field));
break;
}
case "SMS / GG / SG-1000":
{
if (button < 6)
{
SMSControllerTemplate obj = (SMSControllerTemplate)controller[prev];
FieldInfo buttonField = obj.GetType().GetField(fieldName);
field = buttonField.GetValue(obj);
buttonField.SetValue(obj, AppendButtonMapping(TempBox.Text, (string)field));
}
else if (button == 6)
Global.Config.SmsPause = AppendButtonMapping(TempBox.Text, Global.Config.SmsPause);
else
Global.Config.SmsReset = AppendButtonMapping(TempBox.Text, Global.Config.SmsReset);
break;
}
}
TempBox.Dispose();
Label TempLabel = Labels[button] as Label;
@ -1061,7 +995,7 @@ namespace BizHawk.MultiClient
switch (SystemComboBox.SelectedItem.ToString())
{
case "SMS / GG / SG-1000":
DoSMS();
Do(SystemComboBox.SelectedItem.ToString());
break;
case "PC Engine / SGX":
DoPCE();
@ -1076,7 +1010,7 @@ namespace BizHawk.MultiClient
DoTI83();
break;
case "NES":
Do("NES");
Do(SystemComboBox.SelectedItem.ToString());
break;
case "Atari":
DoAtari();
@ -1090,7 +1024,7 @@ namespace BizHawk.MultiClient
switch (CurSelectConsole)
{
case "SMS / GG / SG-1000":
UpdateSMS(CurSelectController);
Update(CurSelectController, CurSelectConsole);
break;
case "PC Engine / SGX":
UpdatePCE(CurSelectController);
@ -1105,7 +1039,7 @@ namespace BizHawk.MultiClient
UpdateTI83();
break;
case "NES":
Update(CurSelectController, "NES");
Update(CurSelectController, CurSelectConsole);
break;
case "Atari":
UpdateAtari(CurSelectController);