InputSettings: Fix controller type counter to restore WPAD limit (#1118)

This commit is contained in:
goeiecool9999 2024-03-20 10:22:48 +01:00 committed by GitHub
parent 42d14eec96
commit 4d609f06b8
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 4 additions and 31 deletions

View File

@ -295,32 +295,6 @@ wxWindow* InputSettings2::initialize_page(size_t index)
return page; return page;
} }
std::pair<size_t, size_t> InputSettings2::get_emulated_controller_types() const
{
size_t vpad = 0, wpad = 0;
for(size_t i = 0; i < m_notebook->GetPageCount(); ++i)
{
auto* page = m_notebook->GetPage(i);
auto* page_data = (wxControllerPageData*)page->GetClientObject();
if (!page_data)
continue;
if (!page_data->ref().m_controller) // = disabled
continue;
const auto api_type = page_data->ref().m_controller->type();
if (api_type)
continue;
if (api_type == EmulatedController::VPAD)
++vpad;
else
++wpad;
}
return std::make_pair(vpad, wpad);
}
std::shared_ptr<ControllerBase> InputSettings2::get_active_controller() const std::shared_ptr<ControllerBase> InputSettings2::get_active_controller() const
{ {
auto& page_data = get_current_page_data(); auto& page_data = get_current_page_data();
@ -771,14 +745,16 @@ void InputSettings2::on_emulated_controller_dropdown(wxCommandEvent& event)
wxWindowUpdateLocker lock(emulated_controllers); wxWindowUpdateLocker lock(emulated_controllers);
bool is_gamepad_selected = false; bool is_gamepad_selected = false;
bool is_wpad_selected = false;
const auto selected = emulated_controllers->GetSelection(); const auto selected = emulated_controllers->GetSelection();
const auto selected_value = emulated_controllers->GetStringSelection(); const auto selected_value = emulated_controllers->GetStringSelection();
if(selected != wxNOT_FOUND) if(selected != wxNOT_FOUND)
{ {
is_gamepad_selected = selected_value == to_wxString(EmulatedController::type_to_string(EmulatedController::Type::VPAD)); is_gamepad_selected = selected_value == to_wxString(EmulatedController::type_to_string(EmulatedController::Type::VPAD));
is_wpad_selected = !is_gamepad_selected && selected != 0;
} }
const auto [vpad_count, wpad_count] = get_emulated_controller_types(); const auto [vpad_count, wpad_count] = InputManager::instance().get_controller_count();
emulated_controllers->Clear(); emulated_controllers->Clear();
emulated_controllers->AppendString(_("Disabled")); emulated_controllers->AppendString(_("Disabled"));
@ -786,7 +762,7 @@ void InputSettings2::on_emulated_controller_dropdown(wxCommandEvent& event)
if (vpad_count < InputManager::kMaxVPADControllers || is_gamepad_selected) if (vpad_count < InputManager::kMaxVPADControllers || is_gamepad_selected)
emulated_controllers->Append(to_wxString(EmulatedController::type_to_string(EmulatedController::Type::VPAD))); emulated_controllers->Append(to_wxString(EmulatedController::type_to_string(EmulatedController::Type::VPAD)));
if (wpad_count < InputManager::kMaxWPADControllers || !is_gamepad_selected) if (wpad_count < InputManager::kMaxWPADControllers || is_wpad_selected)
{ {
emulated_controllers->AppendString(to_wxString(EmulatedController::type_to_string(EmulatedController::Type::Pro))); emulated_controllers->AppendString(to_wxString(EmulatedController::type_to_string(EmulatedController::Type::Pro)));
emulated_controllers->AppendString(to_wxString(EmulatedController::type_to_string(EmulatedController::Type::Classic))); emulated_controllers->AppendString(to_wxString(EmulatedController::type_to_string(EmulatedController::Type::Classic)));

View File

@ -27,9 +27,6 @@ private:
wxWindow* initialize_page(size_t index); wxWindow* initialize_page(size_t index);
// count active <vpad, wpad> controllers
std::pair<size_t, size_t> get_emulated_controller_types() const;
// currently selected controller from active tab // currently selected controller from active tab
std::shared_ptr<ControllerBase> get_active_controller() const; std::shared_ptr<ControllerBase> get_active_controller() const;