Adds Support for multiple GameCube Controllers

This commit is contained in:
Braden 2012-11-11 15:35:08 -06:00
parent 3429db1115
commit 00df449f89
4 changed files with 64 additions and 7 deletions

View File

@ -408,6 +408,10 @@ CFrame::CFrame(wxFrame* parent,
m_LogWindow->Disable();
g_TASInputDlg = new TASInputDlg(this);
g_TASInputDlg1 = new TASInputDlg(this);
g_TASInputDlg2 = new TASInputDlg(this);
g_TASInputDlg3 = new TASInputDlg(this);
Movie::SetInputManip(TASManipFunction);
State::SetOnAfterLoadCallback(OnAfterLoadCallback);
@ -892,14 +896,41 @@ void OnAfterLoadCallback()
void TASManipFunction(SPADStatus *PadStatus, int controllerID)
{
if (main_frame)
if (main_frame && controllerID == 0)
main_frame->g_TASInputDlg->GetValues(PadStatus, controllerID);
if (main_frame && controllerID == 1)
main_frame->g_TASInputDlg1->GetValues(PadStatus, controllerID);
if (main_frame && controllerID == 2)
main_frame->g_TASInputDlg2->GetValues(PadStatus, controllerID);
if (main_frame && controllerID == 3)
main_frame->g_TASInputDlg3->GetValues(PadStatus, controllerID);
}
bool TASInputHasFocus()
{
if(main_frame->g_TASInputDlg->TASInputDlgHasFocus())
return true;
if(main_frame->g_TASInputDlg1->TASInputDlgHasFocus())
return true;
if(main_frame->g_TASInputDlg2->TASInputDlgHasFocus())
return true;
if(main_frame->g_TASInputDlg3->TASInputDlgHasFocus())
return true;
return false;
}
void CFrame::OnKeyDown(wxKeyEvent& event)
{
if(Core::GetState() != Core::CORE_UNINITIALIZED &&
(RendererHasFocus() || g_TASInputDlg->HasFocus()))
(RendererHasFocus() || TASInputHasFocus()))
{
int WiimoteId = -1;
// Toggle fullscreen
@ -951,7 +982,7 @@ void CFrame::OnKeyDown(wxKeyEvent& event)
else
{
unsigned int i = NUM_HOTKEYS;
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain || g_TASInputDlg->TASInputDlgHasFocus())
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain || TASInputHasFocus())
{
for (i = 0; i < NUM_HOTKEYS; i++)
{

View File

@ -121,7 +121,10 @@ public:
NetPlaySetupDiag* g_NetPlaySetupDiag;
wxCheatsWindow* g_CheatsWindow;
TASInputDlg* g_TASInputDlg;
TASInputDlg* g_TASInputDlg1;
TASInputDlg* g_TASInputDlg2;
TASInputDlg* g_TASInputDlg3;
void InitBitmaps();
void DoPause();
void DoStop();
@ -365,6 +368,7 @@ void OnAfterLoadCallback();
// For TASInputDlg
void TASManipFunction(SPADStatus *PadStatus, int controllerID);
bool TASInputHasFocus();
#endif // __FRAME_H_

View File

@ -699,7 +699,29 @@ void CFrame::OnRecordReadOnly(wxCommandEvent& event)
void CFrame::OnTASInput(wxCommandEvent& event)
{
g_TASInputDlg->Show(true);
if(SConfig::GetInstance().m_SIDevice[0] == SIDEVICE_GC_CONTROLLER)
{
g_TASInputDlg->Show(true);
g_TASInputDlg->SetTitle("TAS Input - Controller 1");
}
if(SConfig::GetInstance().m_SIDevice[1] == SIDEVICE_GC_CONTROLLER)
{
g_TASInputDlg1->Show(true);
g_TASInputDlg1->SetTitle("TAS Input - Controller 2");
}
if(SConfig::GetInstance().m_SIDevice[2] == SIDEVICE_GC_CONTROLLER)
{
g_TASInputDlg2->Show(true);
g_TASInputDlg2->SetTitle("TAS Input - Controller 3");
}
if(SConfig::GetInstance().m_SIDevice[3] == SIDEVICE_GC_CONTROLLER)
{
g_TASInputDlg3->Show(true);
g_TASInputDlg3->SetTitle("TAS Input - Controller 4");
}
}
void CFrame::OnFrameStep(wxCommandEvent& event)

View File

@ -431,8 +431,8 @@ void TASInputDlg::GetValues(SPADStatus *PadStatus, int controllerID)
GetKeyBoardInput(PadStatus);
// TODO: implement support for more controllers
if (controllerID != 0)
return;
//if (controllerID != 0)
// return;
PadStatus->stickX = mainX;
PadStatus->stickY = mainY;