mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-01-25 15:31:17 +01:00
Checkbox for iteration
Added the option to handle whether the user wants to iterate through the assignment of button mappings or assign them one at a time. fixed formatting issues and code style. I excluded this option from the config file. This stopped the check box value and the boolean from becoming offset. Since the option should always start as false. This still causes an issue with the Wiimote input, since the class variable that keeps the state will be wiped, but the check box value will stay the same after closing/reopening without closing the entire Wiimote configuration. I am looking for a way to resolve this. I also reduced wait time to 2.5 seconds vs. the 5 seconds previously. Seemed to be a little long. These changes apparently did not go through. This should fix the Wiimote issue.
This commit is contained in:
parent
ffa6572116
commit
411c060504
@ -83,6 +83,7 @@ GCPad::GCPad(const unsigned int index) : m_index(index)
|
||||
// options
|
||||
groups.emplace_back(m_options = new ControlGroup(_trans("Options")));
|
||||
m_options->settings.emplace_back(new ControlGroup::BackgroundInputSetting(_trans("Background Input")));
|
||||
m_options->settings.emplace_back(new ControlGroup::IterateUI(_trans("Iterative Input")));
|
||||
}
|
||||
|
||||
std::string GCPad::GetName() const
|
||||
|
@ -308,6 +308,7 @@ Wiimote::Wiimote( const unsigned int index )
|
||||
m_options->settings.emplace_back(new ControlGroup::BackgroundInputSetting(_trans("Background Input")));
|
||||
m_options->settings.emplace_back(new ControlGroup::Setting(_trans("Sideways Wiimote"), false));
|
||||
m_options->settings.emplace_back(new ControlGroup::Setting(_trans("Upright Wiimote"), false));
|
||||
m_options->settings.emplace_back(new ControlGroup::IterateUI(_trans("Iterative Input")));
|
||||
|
||||
// TODO: This value should probably be re-read if SYSCONF gets changed
|
||||
m_sensor_bar_on_top = SConfig::GetInstance().m_SYSCONF->GetData<u8>("BT.BAR") != 0;
|
||||
|
@ -465,6 +465,13 @@ void GamepadPage::AdjustSetting(wxCommandEvent& event)
|
||||
((PadSetting*)((wxControl*)event.GetEventObject())->GetClientData())->UpdateValue();
|
||||
}
|
||||
|
||||
void GamepadPage::AdjustSettingUI(wxCommandEvent& event)
|
||||
{
|
||||
m_iterate = !m_iterate;
|
||||
std::lock_guard<std::recursive_mutex> lk(m_config.controls_lock);
|
||||
((PadSetting*)((wxControl*)event.GetEventObject())->GetClientData())->UpdateValue();
|
||||
}
|
||||
|
||||
void GamepadPage::AdjustControlOption(wxCommandEvent&)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> lk(m_config.controls_lock);
|
||||
@ -521,7 +528,7 @@ void ControlDialog::DetectControl(wxCommandEvent& event)
|
||||
void GamepadPage::DetectControl(wxCommandEvent& event)
|
||||
{
|
||||
ControlButton* btn = (ControlButton*)event.GetEventObject();
|
||||
if (DetectButton(btn))
|
||||
if (DetectButton(btn) && m_iterate == true)
|
||||
{
|
||||
auto it = std::find(control_buttons.begin(), control_buttons.end(), btn);
|
||||
|
||||
@ -905,7 +912,15 @@ ControlGroupBox::ControlGroupBox(ControllerEmu::ControlGroup* const group, wxWin
|
||||
for (auto& groupSetting : group->settings)
|
||||
{
|
||||
PadSettingCheckBox* setting_cbox = new PadSettingCheckBox(parent, groupSetting.get());
|
||||
setting_cbox->wxcontrol->Bind(wxEVT_CHECKBOX, &GamepadPage::AdjustSetting, eventsink);
|
||||
if (groupSetting.get()->is_iterate == true)
|
||||
{
|
||||
setting_cbox->wxcontrol->Bind(wxEVT_CHECKBOX, &GamepadPage::AdjustSettingUI, eventsink);
|
||||
groupSetting.get()->value = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
setting_cbox->wxcontrol->Bind(wxEVT_CHECKBOX, &GamepadPage::AdjustSetting, eventsink);
|
||||
}
|
||||
options.push_back(setting_cbox);
|
||||
|
||||
Add(setting_cbox->wxcontrol, 0, wxALL|wxLEFT, 5);
|
||||
|
@ -5,7 +5,7 @@
|
||||
#pragma once
|
||||
|
||||
#define SLIDER_TICK_COUNT 100
|
||||
#define DETECT_WAIT_TIME 5000
|
||||
#define DETECT_WAIT_TIME 2500
|
||||
#define PREVIEW_UPDATE_TIME 25
|
||||
|
||||
// might have to change this setup for wiimote
|
||||
@ -196,6 +196,7 @@ public:
|
||||
|
||||
void AdjustControlOption(wxCommandEvent& event);
|
||||
void AdjustSetting(wxCommandEvent& event);
|
||||
void AdjustSettingUI(wxCommandEvent& event);
|
||||
|
||||
void GetProfilePath(std::string& path);
|
||||
|
||||
@ -215,6 +216,7 @@ private:
|
||||
InputConfigDialog* const m_config_dialog;
|
||||
InputConfig& m_config;
|
||||
bool DetectButton(ControlButton* button);
|
||||
bool m_iterate = false;
|
||||
};
|
||||
|
||||
class InputConfigDialog : public wxDialog
|
||||
|
@ -45,6 +45,8 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s
|
||||
{
|
||||
if (s->is_virtual)
|
||||
continue;
|
||||
if (s->is_iterate)
|
||||
continue;
|
||||
sec->Get(group + s->name, &s->value, s->default_value * 100);
|
||||
s->value /= 100;
|
||||
}
|
||||
@ -104,6 +106,9 @@ void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::s
|
||||
{
|
||||
if (s->is_virtual)
|
||||
continue;
|
||||
if (s->is_iterate)
|
||||
continue;
|
||||
|
||||
sec->Set(group + s->name, s->value * 100.0, s->default_value * 100.0);
|
||||
}
|
||||
|
||||
|
@ -28,7 +28,7 @@ enum
|
||||
GROUP_TYPE_TILT,
|
||||
GROUP_TYPE_CURSOR,
|
||||
GROUP_TYPE_TRIGGERS,
|
||||
GROUP_TYPE_SLIDER,
|
||||
GROUP_TYPE_SLIDER
|
||||
};
|
||||
|
||||
enum
|
||||
@ -93,13 +93,15 @@ public:
|
||||
, default_value(def_value)
|
||||
, low(_low)
|
||||
, high(_high)
|
||||
, is_virtual(false) {}
|
||||
, is_virtual(false)
|
||||
, is_iterate(false) {}
|
||||
|
||||
const std::string name;
|
||||
ControlState value;
|
||||
const ControlState default_value;
|
||||
const unsigned int low, high;
|
||||
bool is_virtual;
|
||||
bool is_iterate;
|
||||
|
||||
virtual void SetValue(ControlState new_value)
|
||||
{
|
||||
@ -131,6 +133,15 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class IterateUI : public Setting
|
||||
{
|
||||
public:
|
||||
IterateUI(const std::string &_name) : Setting(_name, false)
|
||||
{
|
||||
is_iterate = true;
|
||||
}
|
||||
};
|
||||
|
||||
ControlGroup(const std::string& _name, const unsigned int _type = GROUP_TYPE_OTHER) : name(_name), type(_type) {}
|
||||
virtual ~ControlGroup() {}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user