Skip to content

Commit

Permalink
InputSettings: Fix controller type counter to restore WPAD limit (#1118)
Browse files Browse the repository at this point in the history
  • Loading branch information
goeiecool9999 authored Mar 20, 2024
1 parent 42d14ee commit 4d609f0
Show file tree
Hide file tree
Showing 2 changed files with 4 additions and 31 deletions.
32 changes: 4 additions & 28 deletions src/gui/input/InputSettings2.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -295,32 +295,6 @@ wxWindow* InputSettings2::initialize_page(size_t index)
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
{
auto& page_data = get_current_page_data();
Expand Down Expand Up @@ -771,22 +745,24 @@ void InputSettings2::on_emulated_controller_dropdown(wxCommandEvent& event)
wxWindowUpdateLocker lock(emulated_controllers);

bool is_gamepad_selected = false;
bool is_wpad_selected = false;
const auto selected = emulated_controllers->GetSelection();
const auto selected_value = emulated_controllers->GetStringSelection();
if(selected != wxNOT_FOUND)
{
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->AppendString(_("Disabled"));

if (vpad_count < InputManager::kMaxVPADControllers || is_gamepad_selected)
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::Classic)));
Expand Down
3 changes: 0 additions & 3 deletions src/gui/input/InputSettings2.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,9 +27,6 @@ class InputSettings2 : public wxDialog

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
std::shared_ptr<ControllerBase> get_active_controller() const;

Expand Down

0 comments on commit 4d609f0

Please sign in to comment.