diff --git a/Source/Plugins/Plugin_Wiimote/Src/Config.cpp b/Source/Plugins/Plugin_Wiimote/Src/Config.cpp index 7a66c23ec4..4b02418fd5 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/Config.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/Config.cpp @@ -192,6 +192,9 @@ void Config::Save(int Slot) iniFile.Set(SectionName, "CcTriggers", ClassicController.TType); for (int x = 0; x < 23; x++) iniFile.Set(SectionName, ccControlNames[x], WiiMoteEmu::PadMapping[i].Cc.keyForControls[x]); + // GH3 + for (int x = 0; x < 14; x++) + iniFile.Set(SectionName, gh3ControlNames[x], WiiMoteEmu::PadMapping[i].GH3c.keyForControls[x]); // Save the physical device ID number iniFile.Set(SectionName, "DeviceID", WiiMoteEmu::PadMapping[i].ID); diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp index ad303da7af..a15a5fcb49 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.cpp @@ -15,8 +15,6 @@ // Official SVN repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ -#include "CommonTypes.h" // for u16 -#include "IniFile.h" #include "wiimote_real.h" // Local #include "wiimote_hid.h" #include "main.h" @@ -60,7 +58,6 @@ WiimoteBasicConfigDialog::WiimoteBasicConfigDialog(wxWindow *parent, wxWindowID ControlsCreated = false; m_bEnableUseRealWiimote = true; - Closing = true; Page = 0; g_Config.Load(); CreateGUIControls(); @@ -120,8 +117,9 @@ void WiimoteBasicConfigDialog::ButtonClick(wxCommandEvent& event) g_Config.Save(); break; case ID_BUTTONMAPPING: - if (!m_PadConfigFrame) - m_PadConfigFrame = new WiimotePadConfigDialog(this); + if (m_PadConfigFrame) + m_PadConfigFrame->EndModal(wxID_CLOSE); + m_PadConfigFrame = new WiimotePadConfigDialog(this); if (!m_PadConfigFrame->IsShown()) m_PadConfigFrame->ShowModal(); break; diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.h b/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.h index 44db69cd7e..04d31179b4 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.h +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigBasicDlg.h @@ -54,7 +54,6 @@ class WiimoteBasicConfigDialog : public wxDialog *m_ShutDownTimer; wxCheckBox *m_UseRealWiimote[4]; - bool Closing; private: DECLARE_EVENT_TABLE(); diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp index 16593cd555..23cd9ce5bf 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigGamepad.cpp @@ -188,6 +188,21 @@ void WiimotePadConfigDialog::UpdateGUIButtonMapping(int controller) m_bCcRu[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].Cc.keyForControls[20]).c_str())); m_bCcRr[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].Cc.keyForControls[21]).c_str())); m_bCcRd[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].Cc.keyForControls[22]).c_str())); + m_bGH3_Green[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[0]).c_str())); + m_bGH3_Red[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[1]).c_str())); + m_bGH3_Yellow[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[2]).c_str())); + m_bGH3_Blue[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[3]).c_str())); + m_bGH3_Orange[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[4]).c_str())); + m_bGH3_Plus[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[5]).c_str())); + m_bGH3_Minus[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[6]).c_str())); + m_bGH3_Whammy[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[7]).c_str())); + m_bGH3_ALeft[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[8]).c_str())); + m_bGH3_AUp[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[9]).c_str())); + m_bGH3_ARight[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[10]).c_str())); + m_bGH3_ADown[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[11]).c_str())); + m_bGH3_StrumUp[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[12]).c_str())); + m_bGH3_StrumDown[controller]->SetLabel(wxString::FromAscii(InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].GH3c.keyForControls[13]).c_str())); + #endif //INFO_LOG(CONSOLE, "m_bWmA[%i] = %i = %s\n", controller, WiiMoteEmu::PadMapping[controller].Wm.keyForControls[0], InputCommon::VKToString(WiiMoteEmu::PadMapping[controller].Wm.keyForControls[0]).c_str()); @@ -258,7 +273,10 @@ void WiimotePadConfigDialog::SaveKeyboardMapping(int Controller, int Id, int Key { WiiMoteEmu::PadMapping[Controller].Cc.keyForControls[Id - IDB_CC_A] = Key; } - + else if (IDB_GH3_GREEN <= Id && Id <= IDB_GH3_STRUM_DOWN) + { + WiiMoteEmu::PadMapping[Controller].GH3c.keyForControls[Id - IDB_GH3_GREEN] = Key; + } //INFO_LOG(CONSOLE, "WiiMoteEmu::PadMapping[%i].Wm.A = %i", Controller, WiiMoteEmu::PadMapping[Controller].Wm.A); } @@ -357,6 +375,50 @@ void WiimotePadConfigDialog::SetButtonText(int id, char text[128], int _Page) case IDB_CC_RU: m_bCcRu[controller]->SetLabel(wxString::FromAscii(text)); break; case IDB_CC_RR: m_bCcRr[controller]->SetLabel(wxString::FromAscii(text)); break; case IDB_CC_RD: m_bCcRd[controller]->SetLabel(wxString::FromAscii(text)); break; + + // GH3 Controller + case IDB_GH3_GREEN: + m_bGH3_Green[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_RED: + m_bGH3_Red[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_YELLOW: + m_bGH3_Yellow[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_BLUE: + m_bGH3_Blue[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_ORANGE: + m_bGH3_Orange[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_PLUS: + m_bGH3_Plus[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_MINUS: + m_bGH3_Minus[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_WHAMMY: + m_bGH3_Whammy[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_ANALOG_LEFT: + m_bGH3_ALeft[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_ANALOG_RIGHT: + m_bGH3_ARight[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_ANALOG_UP: + m_bGH3_AUp[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_ANALOG_DOWN: + m_bGH3_ADown[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_STRUM_UP: + m_bGH3_StrumUp[controller]->SetLabel(wxString::FromAscii(text)); + break; + case IDB_GH3_STRUM_DOWN: + m_bGH3_StrumDown[controller]->SetLabel(wxString::FromAscii(text)); + break; default: break; } //INFO_LOG(CONSOLE, "SetButtonText: %s\n", text); diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp index 6f4f38363e..dc05773201 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.cpp @@ -15,18 +15,12 @@ // Official SVN repository and contact information can be found at // http://code.google.com/p/dolphin-emu/ -#include "CommonTypes.h" // for u16 -#include "IniFile.h" -#include "StringUtil.h" - -#include "wiimote_real.h" // Local +#include "wiimote_real.h" // for MAX_WIIMOTES #include "wiimote_hid.h" #include "main.h" #include "ConfigPadDlg.h" #include "ConfigBasicDlg.h" #include "Config.h" -#include "EmuMain.h" // for LoadRecordedMovements() -#include "EmuSubroutines.h" // for WmRequestStatus #include "EmuDefinitions.h" // for joyinfo enum TriggerType @@ -79,7 +73,24 @@ BEGIN_EVENT_TABLE(WiimotePadConfigDialog,wxDialog) EVT_BUTTON(IDB_CC_DL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DU, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_DD, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_LL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_LU, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_LR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_LD, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_RL, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_RU, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_RR, WiimotePadConfigDialog::OnButtonClick) EVT_BUTTON(IDB_CC_RD, WiimotePadConfigDialog::OnButtonClick) - + + EVT_BUTTON(IDB_GH3_GREEN, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_RED, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_YELLOW, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_BLUE, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_ORANGE, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_PLUS, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_MINUS, WiimotePadConfigDialog::OnButtonClick) +// EVT_COMBOBOX(IDB_GH3_WHAMMY, WiimotePadConfigDialog::GeneralSettingsChanged) + EVT_COMBOBOX(IDCB_GH3_ANALOG_STICK, WiimotePadConfigDialog::GeneralSettingsChanged) + EVT_BUTTON(IDB_GH3_ANALOG_LEFT, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_ANALOG_RIGHT, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_ANALOG_UP, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_ANALOG_DOWN, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_STRUM_UP, WiimotePadConfigDialog::OnButtonClick) + EVT_BUTTON(IDB_GH3_STRUM_DOWN, WiimotePadConfigDialog::OnButtonClick) + + EVT_BUTTON(IDB_ANALOG_LEFT_X, WiimotePadConfigDialog::GetButtons) EVT_BUTTON(IDB_ANALOG_LEFT_Y, WiimotePadConfigDialog::GetButtons) EVT_BUTTON(IDB_ANALOG_RIGHT_X, WiimotePadConfigDialog::GetButtons) @@ -372,8 +383,7 @@ void WiimotePadConfigDialog::CreatePadGUIControls() wxFont m_SmallFont(7, wxFONTFAMILY_DEFAULT, wxFONTSTYLE_NORMAL, wxFONTWEIGHT_NORMAL); // Configuration controls sizes - static const int TxtW = 50, TxtH = 19, ChW = 257, BtW = 75, BtH = 20; - + static const int TxtW = 50, TxtH = 19, BtW = 75, BtH = 20; // Controller @@ -437,10 +447,8 @@ void WiimotePadConfigDialog::CreatePadGUIControls() m_gJoyname[i]->AddStretchSpacer(); - // -------------------------------------------------------------------- // Tilt Wiimote - // ----------------------------- - /**/ + // Controls m_TiltComboInput[i] = new wxComboBox(m_Controller[i], ID_TILT_INPUT, StrTilt[0], wxDefaultPosition, wxDefaultSize, StrTilt, wxCB_READONLY); m_TiltComboRangeRoll[i] = new wxComboBox(m_Controller[i], ID_TILT_RANGE_ROLL, StrTiltRangeRoll[0], wxDefaultPosition, wxDefaultSize, StrTiltRangeRoll, wxCB_READONLY); @@ -479,10 +487,7 @@ void WiimotePadConfigDialog::CreatePadGUIControls() m_TiltComboRangeRoll[i]->SetToolTip(wxT("The maximum roll in degrees. Set to 0 to turn off.")); m_TiltComboRangePitch[i]->SetToolTip(wxT("The maximum pitch in degrees. Set to 0 to turn off.")); - // -------------------------------------------------------------------- // Analog triggers - // ----------------------------- - /**/ m_gTrigger[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Triggers")); m_TriggerStatusL[i]= new wxStaticText(m_Controller[i], wxID_ANY, wxT("Left: ")); @@ -540,9 +545,7 @@ void WiimotePadConfigDialog::CreatePadGUIControls() m_gTrigger[i]->Add(m_SizeAnalogTriggerVertLeft[i], 0, wxEXPAND | (wxLEFT | wxRIGHT), 5); m_gTrigger[i]->Add(m_SizeAnalogTriggerVertRight[i], 0, wxEXPAND | (wxLEFT | wxRIGHT), 5); - // -------------------------------------------------------------------- // Row 2 Sizers: Connected pads, tilt, triggers - // ----------------------------- m_HorizControllerTilt[i] = new wxBoxSizer(wxHORIZONTAL); m_HorizControllerTilt[i]->Add(m_gJoyname[i], 0, wxALIGN_CENTER | wxEXPAND, 0); m_HorizControllerTilt[i]->Add(m_gTilt[i], 0, wxEXPAND | (wxLEFT), 5); @@ -553,9 +556,7 @@ void WiimotePadConfigDialog::CreatePadGUIControls() - // -------------------------------------------------------------------- // Analog sticks - // ----------------------------- // Status panels m_TStatusLeftIn[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("In")); @@ -650,25 +651,19 @@ void WiimotePadConfigDialog::CreatePadGUIControls() m_gAnalogRight[i]->Add(m_SizeAnalogRight[i], 0, wxEXPAND | wxALIGN_CENTER_VERTICAL, 0); - // -------------------------------------------------------------------- // Row 3 Sizers - // ----------------------------- m_HorizControllers[i] = new wxBoxSizer(wxHORIZONTAL); //m_HorizControllers[i]->AddStretchSpacer(); m_HorizControllers[i]->AddSpacer(17); m_HorizControllers[i]->Add(m_gAnalogLeft[i]); m_HorizControllers[i]->Add(m_gAnalogRight[i], 0, (wxLEFT), 5); //m_HorizControllers[i]->AddStretchSpacer(); - /////////////////////////// - //////////////////////////////////////////////////////////////////////// + // Keyboard mapping - // ---------------- - // -------------------------------------------------------------------- // Wiimote - // ----------------------------- m_tWmA[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("A")); m_tWmB[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("B")); @@ -757,10 +752,7 @@ void WiimotePadConfigDialog::CreatePadGUIControls() m_gWiimote[i]->Add(m_SWmVertRight[i], 0, wxALIGN_RIGHT | (wxLEFT), 5); m_gWiimote[i]->AddSpacer(1); - // -------------------------------------------------------------------- // Nunchuck - // ----------------------------- - // Stick controls m_NunchuckTextStick[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Stick")); m_NunchuckComboStick[i] = new wxComboBox(m_Controller[i], IDCB_NUNCHUCK_STICK, StrNunchuck[0], wxDefaultPosition, wxDefaultSize, StrNunchuck, wxCB_READONLY); @@ -822,10 +814,8 @@ void WiimotePadConfigDialog::CreatePadGUIControls() //Set values m_NunchuckComboStick[i]->SetSelection(g_Config.Nunchuck.Type); - // -------------------------------------------------------------------- // Classic Controller - // ----------------------------- - + // Stick controls m_CcTextLeftStick[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Left stick")); m_CcComboLeftStick[i] = new wxComboBox(m_Controller[i], IDCB_CC_LEFT_STICK, StrNunchuck[0], wxDefaultPosition, wxDefaultSize, StrNunchuck, wxCB_READONLY); @@ -899,7 +889,7 @@ void WiimotePadConfigDialog::CreatePadGUIControls() m_SCcLeftStick[i] = new wxBoxSizer(wxHORIZONTAL); m_SCcLeftStick[i]->Add(m_CcTextLeftStick[i], 0, (wxUP), 4); m_SCcLeftStick[i]->Add(m_CcComboLeftStick[i], 0, (wxLEFT), 2); - + m_SCcRightStick[i] = new wxBoxSizer(wxHORIZONTAL); m_SCcRightStick[i]->Add(m_CcTextRightStick[i], 0, (wxUP), 4); m_SCcRightStick[i]->Add(m_CcComboRightStick[i], 0, (wxLEFT), 2); @@ -992,21 +982,165 @@ void WiimotePadConfigDialog::CreatePadGUIControls() m_CcComboRightStick[i]->SetSelection(g_Config.ClassicController.RType); m_CcComboTriggers[i]->SetSelection(g_Config.ClassicController.TType); - // -------------------------------------------------------------------- + //GH3 + // Stick controls + m_tGH3_Analog[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("stick")); + m_GH3ComboAnalog[i] = new wxComboBox(m_Controller[i], IDCB_GH3_ANALOG_STICK, StrNunchuck[0], wxDefaultPosition, wxDefaultSize, StrNunchuck, wxCB_READONLY); + + + + m_tGH3_Green[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Green")); + m_tGH3_Red[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Red")); + m_tGH3_Yellow[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Yellow")); + m_tGH3_Blue[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Blue")); + m_tGH3_Orange[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Orange")); + m_tGH3_Plus[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("+")); + m_tGH3_Minus[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("- ")); + m_tGH3_Whammy[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Whammy")); + + m_tGH3_ALeft[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Left")); //analog stick + m_tGH3_ARight[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Up")); + m_tGH3_AUp[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Right")); + m_tGH3_ADown[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Down")); + + m_tGH3_StrumUp[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Strum Up")); + m_tGH3_StrumDown[i] = new wxStaticText(m_Controller[i], wxID_ANY, wxT("Strum Down")); + + m_bGH3_Green[i] = new wxButton(m_Controller[i], IDB_GH3_GREEN, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_Red[i] = new wxButton(m_Controller[i], IDB_GH3_RED, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_Yellow[i] = new wxButton(m_Controller[i], IDB_GH3_YELLOW, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_Blue[i] = new wxButton(m_Controller[i], IDB_GH3_BLUE, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_Orange[i] = new wxButton(m_Controller[i], IDB_GH3_ORANGE, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_Plus[i] = new wxButton(m_Controller[i], IDB_GH3_PLUS, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_Minus[i] = new wxButton(m_Controller[i], IDB_GH3_MINUS, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + + m_bGH3_Whammy[i] = new wxButton(m_Controller[i], IDB_GH3_WHAMMY, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + + m_bGH3_ALeft[i] = new wxButton(m_Controller[i], IDB_GH3_ANALOG_LEFT, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); // Left analog stick + m_bGH3_AUp[i] = new wxButton(m_Controller[i], IDB_GH3_ANALOG_UP, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_ARight[i] = new wxButton(m_Controller[i], IDB_GH3_ANALOG_RIGHT, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_ADown[i] = new wxButton(m_Controller[i], IDB_GH3_ANALOG_DOWN, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + + m_bGH3_StrumUp[i] = new wxButton(m_Controller[i], IDB_GH3_STRUM_UP, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + m_bGH3_StrumDown[i] = new wxButton(m_Controller[i], IDB_GH3_STRUM_DOWN, wxEmptyString, wxDefaultPosition, wxSize(BtW, BtH)); + + m_GH3ComboAnalog[i]->Disable(); + m_bGH3_Whammy[i]->Disable(); + m_bGH3_ALeft[i]->Disable(); + m_bGH3_AUp[i]->Disable(); + m_bGH3_ARight[i]->Disable(); + m_bGH3_ADown[i]->Disable(); + + // Sizers + m_sGH3_Analog[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Analog[i]->Add(m_tGH3_Analog[i], 0, (wxUP), 4); + m_sGH3_Analog[i]->Add(m_GH3ComboAnalog[i], 0, (wxLEFT), 2); + + + m_sGH3_Whammy[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Whammy[i]->Add(m_tGH3_Whammy[i], 0, (wxUP), 4); + m_sGH3_Whammy[i]->Add(m_bGH3_Whammy[i], 0, (wxLEFT), 2); + + m_sGH3_StrumUp[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_StrumDown[i] = new wxBoxSizer(wxHORIZONTAL); + + m_sGH3_Green[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Green[i]->Add(m_tGH3_Green[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_Green[i]->Add(m_bGH3_Green[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_Red[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Red[i]->Add(m_tGH3_Red[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_Red[i]->Add(m_bGH3_Red[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_Yellow[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Yellow[i]->Add(m_tGH3_Yellow[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_Yellow[i]->Add(m_bGH3_Yellow[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_Blue[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Blue[i]->Add(m_tGH3_Blue[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_Blue[i]->Add(m_bGH3_Blue[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_Orange[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Orange[i]->Add(m_tGH3_Orange[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_Orange[i]->Add(m_bGH3_Orange[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_Plus[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Plus[i]->Add(m_tGH3_Plus[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_Plus[i]->Add(m_bGH3_Plus[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_Minus[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_Minus[i]->Add(m_tGH3_Minus[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_Minus[i]->Add(m_bGH3_Minus[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_ALeft[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_ALeft[i]->Add(m_tGH3_ALeft[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_ALeft[i]->Add(m_bGH3_ALeft[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_ARight[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_ARight[i]->Add(m_tGH3_ARight[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_ARight[i]->Add(m_bGH3_ARight[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_AUp[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_AUp[i]->Add(m_tGH3_AUp[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_AUp[i]->Add(m_bGH3_AUp[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_ADown[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_ADown[i]->Add(m_tGH3_ADown[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_ADown[i]->Add(m_bGH3_ADown[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_StrumUp[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_StrumUp[i]->Add(m_tGH3_StrumUp[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_StrumUp[i]->Add(m_bGH3_StrumUp[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + m_sGH3_StrumDown[i] = new wxBoxSizer(wxHORIZONTAL); + m_sGH3_StrumDown[i]->Add(m_tGH3_StrumDown[i], 0, wxALIGN_RIGHT | (wxUP), 4); + m_sGH3_StrumDown[i]->Add(m_bGH3_StrumDown[i], 0, wxALIGN_RIGHT | (wxLEFT), 2); + + // The left parent + m_SGH3VertLeft[i] = new wxBoxSizer(wxVERTICAL); + m_SGH3VertLeft[i]->Add(m_sGH3_Analog[i], 0, wxALIGN_RIGHT | (wxALL), 2); + m_SGH3VertLeft[i]->Add(m_sGH3_Whammy[i], 0, wxALIGN_RIGHT | (wxALL), 2); + m_SGH3VertLeft[i]->Add(m_sGH3_ALeft[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertLeft[i]->Add(m_sGH3_AUp[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertLeft[i]->Add(m_sGH3_ARight[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertLeft[i]->Add(m_sGH3_ADown[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + + // The right parent + m_SGH3VertRight[i] = new wxBoxSizer(wxVERTICAL); + + m_SGH3VertRight[i]->Add(m_sGH3_Green[i], 0, wxALIGN_RIGHT | (wxALL), 1); + m_SGH3VertRight[i]->Add(m_sGH3_Red[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertRight[i]->Add(m_sGH3_Yellow[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertRight[i]->Add(m_sGH3_Blue[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertRight[i]->Add(m_sGH3_Orange[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertRight[i]->Add(m_sGH3_Plus[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertRight[i]->Add(m_sGH3_Minus[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertRight[i]->Add(m_sGH3_StrumUp[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_SGH3VertRight[i]->Add(m_sGH3_StrumDown[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + + // The parent sizer + m_gGuitarHero3Controller[i] = new wxStaticBoxSizer (wxHORIZONTAL, m_Controller[i], wxT("Guitar Hero 3 Controller")); + m_gGuitarHero3Controller[i]->Add(m_SGH3VertLeft[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + // m_gGuitarHero3Controller[i]->Add(m_SGH3VertMiddle[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + m_gGuitarHero3Controller[i]->Add(m_SGH3VertRight[i], 0, wxALIGN_RIGHT | (wxLEFT | wxRIGHT | wxDOWN), 1); + + //Set values + m_CcComboLeftStick[i]->SetSelection(g_Config.ClassicController.LType); + m_CcComboRightStick[i]->SetSelection(g_Config.ClassicController.RType); + m_CcComboTriggers[i]->SetSelection(g_Config.ClassicController.TType); + + // Row 4 Sizers - // ----------------------------- + m_HorizControllerMapping[i] = new wxBoxSizer(wxHORIZONTAL); - m_HorizControllerMapping[i]->AddStretchSpacer(); - m_HorizControllerMapping[i]->Add(m_gWiimote[i]); + m_HorizControllerMapping[i]->Add(m_gWiimote[i], 0, (wxLEFT), 5); + m_HorizControllerMapping[i]->AddStretchSpacer(2); m_HorizControllerMapping[i]->Add(m_gNunchuck[i], 0, (wxLEFT), 5); m_HorizControllerMapping[i]->Add(m_gClassicController[i], 0, (wxLEFT), 5); - m_HorizControllerMapping[i]->AddStretchSpacer(); - /////////////////////////// + m_HorizControllerMapping[i]->Add(m_gGuitarHero3Controller[i], 0, (wxLEFT), 5); + m_HorizControllerMapping[i]->AddStretchSpacer(2); - - //////////////////////////////////////////////////////////////// // Set up sizers and layout - // ---------------- m_SizeParent[i] = new wxBoxSizer(wxVERTICAL); m_SizeParent[i]->Add(m_HorizControllerTiltParent[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); m_SizeParent[i]->Add(m_HorizControllers[i], 0, wxEXPAND | (wxLEFT | wxRIGHT | wxDOWN), 5); diff --git a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h index bf242b6cea..d3d3e6b767 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h +++ b/Source/Plugins/Plugin_Wiimote/Src/ConfigPadDlg.h @@ -31,6 +31,8 @@ #include #include +#define GH3_CONTROLS 14 + class WiimotePadConfigDialog : public wxDialog { public: @@ -158,6 +160,25 @@ class WiimotePadConfigDialog : public wxDialog *m_SCcRu[4], *m_SCcRr[4], *m_SCcRd[4]; + //GH3 + wxBoxSizer *m_SGH3VertLeft[4], + *m_SGH3VertMiddle[4], + *m_SGH3VertRight[4], + *m_sGH3_Green[4], + *m_sGH3_Red[4], + *m_sGH3_Yellow[4], + *m_sGH3_Blue[4], + *m_sGH3_Orange[4], + *m_sGH3_Plus[4], + *m_sGH3_Minus[4], + *m_sGH3_Whammy[4], + *m_sGH3_Analog[4], + *m_sGH3_ALeft[4], + *m_sGH3_ARight[4], + *m_sGH3_AUp[4], + *m_sGH3_ADown[4], + *m_sGH3_StrumUp[4], + *m_sGH3_StrumDown[4]; wxGridBagSizer *m_SizeAnalogTriggerHorizConfig[4], *m_SizeAnalogTriggerStatusBox[4], *m_TiltGrid[4], *m_GridLeftStick[4], *m_GridRightStick[4]; @@ -177,6 +198,23 @@ class WiimotePadConfigDialog : public wxDialog *m_bCcDl[4], *m_bCcDu[4], *m_bCcDr[4], *m_bCcDd[4], *m_bCcLl[4], *m_bCcLu[4], *m_bCcLr[4], *m_bCcLd[4], *m_bCcRl[4], *m_bCcRu[4], *m_bCcRr[4], *m_bCcRd[4]; + //GH3 + wxButton *m_bGH3_Green[4], + *m_bGH3_Red[4], + *m_bGH3_Yellow[4], + *m_bGH3_Blue[4], + *m_bGH3_Orange[4], + *m_bGH3_Plus[4], + *m_bGH3_Minus[4], + *m_bGH3_Whammy[4], + *m_bGH3_Analog[4], + *m_bGH3_ALeft[4], + *m_bGH3_ARight[4], + *m_bGH3_AUp[4], + *m_bGH3_ADown[4], + *m_bGH3_StrumUp[4], + *m_bGH3_StrumDown[4]; + wxStaticText *m_TextScreenWidth[4], *m_TextScreenHeight[4], *m_TextScreenLeft[4], *m_TextScreenTop[4], *m_TextAR[4], *m_tAnalogX[8], *m_tAnalogY[8], *m_TiltTextRoll[4], *m_TiltTextPitch[4], *m_CheckC2SLabel[4], *m_ComboDeadZoneLabel[4], *m_TStatusLeftIn[4], *m_TStatusLeftOut[4], *m_TStatusRightIn[4], *m_TStatusRightOut[4], @@ -194,17 +232,34 @@ class WiimotePadConfigDialog : public wxDialog *m_tCcDl[4], *m_tCcDu[4], *m_tCcDr[4], *m_tCcDd[4], *m_tCcLl[4], *m_tCcLu[4], *m_tCcLr[4], *m_tCcLd[4], *m_tCcRl[4], *m_tCcRu[4], *m_tCcRr[4], *m_tCcRd[4], - *m_CcTextLeftStick[4], *m_CcTextRightStick[4], *m_CcTextTriggers[4]; + *m_CcTextLeftStick[4], *m_CcTextRightStick[4], *m_CcTextTriggers[4], + // GH3 + *m_tGH3_Green[4], + *m_tGH3_Red[4], + *m_tGH3_Yellow[4], + *m_tGH3_Blue[4], + *m_tGH3_Orange[4], + *m_tGH3_Plus[4], + *m_tGH3_Minus[4], + *m_tGH3_Whammy[4], + *m_tGH3_Analog[4], + *m_tGH3_ALeft[4], + *m_tGH3_ARight[4], + *m_tGH3_AUp[4], + *m_tGH3_ADown[4], + *m_tGH3_StrumUp[4], + *m_tGH3_StrumDown[4]; + wxButton *ClickedButton; wxString OldLabel; wxComboBox *m_TiltComboInput[4], *m_TiltComboRangeRoll[4], *m_TiltComboRangePitch[4], *m_Joyname[4], *m_ComboDiagonal[4], *m_ComboDeadZoneLeft[4], *m_ComboDeadZoneRight[4], *m_TriggerType[4], - *m_NunchuckComboStick[4], *m_CcComboLeftStick[4], *m_CcComboRightStick[4], *m_CcComboTriggers[4]; + *m_NunchuckComboStick[4], *m_CcComboLeftStick[4], *m_CcComboRightStick[4], *m_CcComboTriggers[4], *m_GH3ComboAnalog[4]; wxPanel *m_pLeftInStatus[4], *m_pLeftOutStatus[4], *m_pRightInStatus[4], *m_pRightOutStatus[4]; wxStaticBitmap *m_bmpSquareLeftIn[4], *m_bmpSquareLeftOut[4], *m_bmpSquareRightIn[4], *m_bmpSquareRightOut[4]; wxStaticBoxSizer *m_gAnalogLeft[4], *m_gAnalogRight[4], *m_gTrigger[4], - *m_gWiimote[4], *m_gNunchuck[4], *m_gClassicController[4]; + *m_gWiimote[4], *m_gNunchuck[4], *m_gClassicController[4], *m_gGuitarHero3Controller[4]; wxBitmap CreateBitmapDot(); wxBitmap CreateBitmap(); @@ -234,6 +289,8 @@ class WiimotePadConfigDialog : public wxDialog ID_ANALOG_RIGHT_X, ID_ANALOG_RIGHT_Y, ID_TRIGGER_L, ID_TRIGGER_R, + IDCB_GH3_ANALOG_STICK, + // Wiimote IDS_WIDTH, IDS_HEIGHT, IDS_LEFT, IDS_TOP, IDB_WM_A, IDB_WM_B, @@ -255,10 +312,26 @@ class WiimotePadConfigDialog : public wxDialog IDB_CC_LL, IDB_CC_LU, IDB_CC_LR, IDB_CC_LD, // Left analog stick IDB_CC_RL, IDB_CC_RU, IDB_CC_RR, IDB_CC_RD, // Right analog stick + // Guitar Hero 3 Controller + IDB_GH3_GREEN, + IDB_GH3_RED, + IDB_GH3_YELLOW, + IDB_GH3_BLUE, + IDB_GH3_ORANGE, + IDB_GH3_PLUS, + IDB_GH3_MINUS, + IDB_GH3_WHAMMY, + IDB_GH3_ANALOG_LEFT, + IDB_GH3_ANALOG_UP, + IDB_GH3_ANALOG_RIGHT, + IDB_GH3_ANALOG_DOWN, + IDB_GH3_STRUM_UP, + IDB_GH3_STRUM_DOWN, + // Gamepad settings IDC_JOYNAME, IDC_LEFT_C2S, IDCB_LEFT_DIAGONAL, IDCB_DEAD_ZONE_LEFT, IDCB_DEAD_ZONE_RIGHT, ID_TRIGGER_TYPE, ID_TILT_INPUT, ID_TILT_RANGE_ROLL, ID_TILT_RANGE_PITCH, ID_TILT_INVERT_ROLL, ID_TILT_INVERT_PITCH, - IDCB_NUNCHUCK_STICK, IDCB_CC_LEFT_STICK, IDCB_CC_RIGHT_STICK, IDCB_CC_TRIGGERS, + IDCB_NUNCHUCK_STICK, IDCB_CC_LEFT_STICK, IDCB_CC_RIGHT_STICK, IDCB_CC_TRIGGERS, IDCB_GH3_ANALOG, }; void OnClose(wxCloseEvent& event); diff --git a/Source/Plugins/Plugin_Wiimote/Src/DataReports.cpp b/Source/Plugins/Plugin_Wiimote/Src/DataReports.cpp index da7b71e463..9bfeba0723 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/DataReports.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/DataReports.cpp @@ -236,14 +236,15 @@ void SendReportCoreAccelIr10Ext(u16 _channelID) // Make a classic extension struct wm_classic_extension _ext; + wm_GH3_extension _GH3_ext; memset(&_ext, 0, sizeof(wm_classic_extension)); + memset(&_GH3_ext, 0, sizeof(wm_GH3_extension)); #if defined(HAVE_WX) && HAVE_WX FillReportInfo(pReport->c); FillReportAcc(pReport->a); FillReportIRBasic(pReport->ir[0], pReport->ir[1]); #endif -//TODO if(g_Config.iExtensionConnected == EXT_NUNCHUCK) { #if defined(HAVE_WX) && HAVE_WX @@ -258,6 +259,11 @@ void SendReportCoreAccelIr10Ext(u16 _channelID) // Copy _ext to pReport->ext memcpy(&pReport->ext, &_ext, sizeof(_ext)); } + else if(g_Config.iExtensionConnected == EXT_GUITARHERO3_CONTROLLER) + { + FillReportGuitarHero3Extension(_GH3_ext); + memcpy(&pReport->ext, &_GH3_ext, sizeof(_GH3_ext)); + } INFO_LOG(WII_IPC_WIIMOTE, " SendReportCoreAccelIr10Ext()"); diff --git a/Source/Plugins/Plugin_Wiimote/Src/EmuSubroutines.h b/Source/Plugins/Plugin_Wiimote/Src/EmuSubroutines.h index 99a02f71bd..345de6c7f2 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/EmuSubroutines.h +++ b/Source/Plugins/Plugin_Wiimote/Src/EmuSubroutines.h @@ -60,6 +60,7 @@ void FillReportIR(wm_ir_extended& _ir0, wm_ir_extended& _ir1); void FillReportIRBasic(wm_ir_basic& _ir0, wm_ir_basic& _ir1); void FillReportExtension(wm_extension& _ext); void FillReportClassicExtension(wm_classic_extension& _ext); +void FillReportGuitarHero3Extension(wm_GH3_extension& _ext); } // namespace diff --git a/Source/Plugins/Plugin_Wiimote/Src/FillReport.cpp b/Source/Plugins/Plugin_Wiimote/Src/FillReport.cpp index 8a39615a76..a5a3ecb941 100644 --- a/Source/Plugins/Plugin_Wiimote/Src/FillReport.cpp +++ b/Source/Plugins/Plugin_Wiimote/Src/FillReport.cpp @@ -1294,11 +1294,11 @@ void FillReportGuitarHero3Extension(wm_GH3_extension& _ext) _ext.Minus = 1; _ext.StrumDown = 1; _ext.StrumUp = 1; - _ext.Yellow = 1; - _ext.Green = 1; - _ext.Blue = 1; - _ext.Red = 1; - _ext.Orange = 1; + _ext.Yellow = 0; + _ext.Green = 0; + _ext.Blue = 0; + _ext.Red = 0; + _ext.Orange = 0; // Check that Dolphin is in focus @@ -1371,15 +1371,15 @@ void FillReportGuitarHero3Extension(wm_GH3_extension& _ext) _ext.Minus = 0x00; if(IsKey(g_GH3Ext.Yellow)) - _ext.Yellow = 0x00; + _ext.Yellow = 0x01; if(IsKey(g_GH3Ext.Green)) - _ext.Green = 0x00; + _ext.Green = 0x01; if(IsKey(g_GH3Ext.Blue)) - _ext.Blue = 0x00; + _ext.Blue = 0x01; if(IsKey(g_GH3Ext.Red)) - _ext.Red = 0x00; + _ext.Red = 0x01; if(IsKey(g_GH3Ext.Orange)) - _ext.Orange = 0x00; + _ext.Orange = 0x01; } // Convert data for reporting