From 28e038865862cf88170bcfb8d9a5328f849d744d Mon Sep 17 00:00:00 2001 From: spycrab Date: Thu, 25 Jan 2018 20:39:03 +0100 Subject: [PATCH] Qt/GameCubePane: Fix EXIDevices resetting to Nothing --- .../Core/DolphinQt2/Settings/GameCubePane.cpp | 66 +++++++++++-------- 1 file changed, 38 insertions(+), 28 deletions(-) diff --git a/Source/Core/DolphinQt2/Settings/GameCubePane.cpp b/Source/Core/DolphinQt2/Settings/GameCubePane.cpp index 2b941663ac..3aef7b6ec3 100644 --- a/Source/Core/DolphinQt2/Settings/GameCubePane.cpp +++ b/Source/Core/DolphinQt2/Settings/GameCubePane.cpp @@ -25,17 +25,26 @@ constexpr int SLOT_A_INDEX = 0; constexpr int SLOT_B_INDEX = 1; +constexpr int SLOT_SP1_INDEX = 2; constexpr int SLOT_COUNT = 3; -constexpr int EXP_MEMORYCARD_INDEX = 2; -constexpr int EXP_GECKO_INDEX = 4; +enum ExpansionSelection +{ + EXP_NOTHING = 0, + EXP_DUMMY = 1, + EXP_MEMORYCARD = 2, + EXP_BROADBAND = 2, + EXP_GCI_FOLDER = 3, + EXP_GECKO = 4, + EXP_AGP = 5, + EXP_MICROPHONE = 6 +}; GameCubePane::GameCubePane() { CreateWidgets(); - ConnectWidgets(); - LoadSettings(); + ConnectWidgets(); } void GameCubePane::CreateWidgets() @@ -172,6 +181,7 @@ void GameCubePane::OnConfigPressed(int slot) QMessageBox::critical(this, tr("Error"), tr("Cannot use that file as a memory card.\n%s\n" "is not a valid GameCube memory card file") .arg(filename)); + return; } @@ -241,29 +251,32 @@ void GameCubePane::LoadSettings() for (int i = 0; i < SLOT_COUNT; i++) { - int index = 0; + int index = EXP_NOTHING; switch (SConfig::GetInstance().m_EXIDevice[i]) { case ExpansionInterface::EXIDEVICE_NONE: - index = 0; + index = EXP_NOTHING; break; case ExpansionInterface::EXIDEVICE_DUMMY: - index = 1; + index = EXP_DUMMY; break; case ExpansionInterface::EXIDEVICE_MEMORYCARD: - index = 2; + index = EXP_MEMORYCARD; + break; + case ExpansionInterface::EXIDEVICE_ETH: + index = EXP_BROADBAND; break; case ExpansionInterface::EXIDEVICE_MEMORYCARDFOLDER: - index = 3; + index = EXP_GCI_FOLDER; break; case ExpansionInterface::EXIDEVICE_GECKO: - index = 4; + index = EXP_GECKO; break; case ExpansionInterface::EXIDEVICE_AGP: - index = 5; + index = EXP_AGP; break; case ExpansionInterface::EXIDEVICE_MIC: - index = 6; + index = EXP_MICROPHONE; break; default: break; @@ -271,7 +284,7 @@ void GameCubePane::LoadSettings() if (i <= SLOT_B_INDEX) { - bool has_config = (index == EXP_MEMORYCARD_INDEX || index > EXP_GECKO_INDEX); + bool has_config = (index == EXP_MEMORYCARD || index > EXP_GECKO); m_slot_buttons[i]->setEnabled(has_config); } @@ -290,37 +303,34 @@ void GameCubePane::SaveSettings() for (int i = 0; i < SLOT_COUNT; i++) { - auto& dev = SConfig::GetInstance().m_EXIDevice[i]; + auto dev = SConfig::GetInstance().m_EXIDevice[i]; int index = m_slot_combos[i]->currentIndex(); - if (i <= SLOT_B_INDEX) - { - bool has_config = (index == 3 || index > 4); - m_slot_buttons[i]->setEnabled(has_config); - } - switch (index) { - case 0: + case EXP_NOTHING: dev = ExpansionInterface::EXIDEVICE_NONE; break; - case 1: + case EXP_DUMMY: dev = ExpansionInterface::EXIDEVICE_DUMMY; break; - case 2: - dev = ExpansionInterface::EXIDEVICE_MEMORYCARD; + case EXP_MEMORYCARD: + if (i == SLOT_SP1_INDEX) + dev = ExpansionInterface::EXIDEVICE_ETH; + else + dev = ExpansionInterface::EXIDEVICE_MEMORYCARD; break; - case 3: + case EXP_GCI_FOLDER: dev = ExpansionInterface::EXIDEVICE_MEMORYCARDFOLDER; break; - case 4: + case EXP_GECKO: dev = ExpansionInterface::EXIDEVICE_GECKO; break; - case 5: + case EXP_AGP: dev = ExpansionInterface::EXIDEVICE_AGP; break; - case 6: + case EXP_MICROPHONE: dev = ExpansionInterface::EXIDEVICE_MIC; break; }