diff options
Diffstat (limited to 'Source/Core/InputCommon/ControllerEmu.cpp')
| -rw-r--r-- | Source/Core/InputCommon/ControllerEmu.cpp | 236 |
1 files changed, 76 insertions, 160 deletions
diff --git a/Source/Core/InputCommon/ControllerEmu.cpp b/Source/Core/InputCommon/ControllerEmu.cpp index e2e37789c7..41adb1d536 100644 --- a/Source/Core/InputCommon/ControllerEmu.cpp +++ b/Source/Core/InputCommon/ControllerEmu.cpp @@ -8,95 +8,33 @@ #include <X11/Xlib.h> #endif -ControllerEmu::~ControllerEmu() -{ - // control groups - std::vector<ControlGroup*>::const_iterator - i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) - delete *i; -} - -ControllerEmu::ControlGroup::~ControlGroup() -{ - // controls - std::vector<Control*>::const_iterator - ci = controls.begin(), - ce = controls.end(); - for (; ci!=ce; ++ci) - delete *ci; - - // settings - std::vector<Setting*>::const_iterator - si = settings.begin(), - se = settings.end(); - for (; si!=se; ++si) - delete *si; -} - -ControllerEmu::Extension::~Extension() -{ - // attachments - std::vector<ControllerEmu*>::const_iterator - ai = attachments.begin(), - ae = attachments.end(); - for (; ai!=ae; ++ai) - delete *ai; -} -ControllerEmu::ControlGroup::Control::~Control() -{ - delete control_ref; -} - void ControllerEmu::UpdateReferences(ControllerInterface& devi) { - std::vector<ControlGroup*>::const_iterator - i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) + for (auto& ctrlGroup : groups) { - std::vector<ControlGroup::Control*>::const_iterator - ci = (*i)->controls.begin(), - ce = (*i)->controls.end(); - for (; ci!=ce; ++ci) - devi.UpdateReference((*ci)->control_ref, default_device); + for (auto& control : ctrlGroup->controls) + devi.UpdateReference(control->control_ref.get(), default_device); // extension - if (GROUP_TYPE_EXTENSION == (*i)->type) + if (ctrlGroup->type == GROUP_TYPE_EXTENSION) { - std::vector<ControllerEmu*>::const_iterator - ai = ((Extension*)*i)->attachments.begin(), - ae = ((Extension*)*i)->attachments.end(); - for (; ai!=ae; ++ai) - (*ai)->UpdateReferences(devi); + for (auto& attachment : ((Extension*)ctrlGroup.get())->attachments) + attachment->UpdateReferences(devi); } } } void ControllerEmu::UpdateDefaultDevice() { - std::vector<ControlGroup*>::const_iterator - i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) + for (auto& ctrlGroup : groups) { - //std::vector<ControlGroup::Control*>::const_iterator - //ci = (*i)->controls.begin(), - //ce = (*i)->controls.end(); - //for (; ci!=ce; ++ci) - //(*ci)->control_ref->device_qualifier = default_device; - // extension - if (GROUP_TYPE_EXTENSION == (*i)->type) + if (ctrlGroup->type == GROUP_TYPE_EXTENSION) { - std::vector<ControllerEmu*>::const_iterator - ai = ((Extension*)*i)->attachments.begin(), - ae = ((Extension*)*i)->attachments.end(); - for (; ai!=ae; ++ai) + for (auto& ai : ((Extension*)ctrlGroup.get())->attachments) { - (*ai)->default_device = default_device; - (*ai)->UpdateDefaultDevice(); + ai->default_device = default_device; + ai->UpdateDefaultDevice(); } } } @@ -107,50 +45,42 @@ void ControllerEmu::ControlGroup::LoadConfig(IniFile::Section *sec, const std::s std::string group(base + name); group += "/"; // settings - std::vector<ControlGroup::Setting*>::const_iterator - si = settings.begin(), - se = settings.end(); - for (; si!=se; ++si) + for (auto& s : settings) { - sec->Get((group+(*si)->name).c_str(), &(*si)->value, (*si)->default_value*100); - (*si)->value /= 100; + sec->Get((group + s->name).c_str(), &s->value, s->default_value * 100); + s->value /= 100; } - // controls - std::vector<ControlGroup::Control*>::const_iterator - ci = controls.begin(), - ce = controls.end(); - for (; ci!=ce; ++ci) + for (auto& c : controls) { // control expression - sec->Get((group + (*ci)->name).c_str(), &(*ci)->control_ref->expression, ""); + sec->Get((group + c->name).c_str(), &c->control_ref->expression, ""); // range - sec->Get((group+(*ci)->name+"/Range").c_str(), &(*ci)->control_ref->range, 100.0f); - (*ci)->control_ref->range /= 100; + sec->Get((group + c->name + "/Range").c_str(), &c->control_ref->range, 100.0f); + c->control_ref->range /= 100; } // extensions - if (GROUP_TYPE_EXTENSION == type) + if (type == GROUP_TYPE_EXTENSION) { - Extension* const ex = ((Extension*)this); + Extension* const ext = ((Extension*)this); - ex->switch_extension = 0; + ext->switch_extension = 0; unsigned int n = 0; std::string extname; sec->Get((base + name).c_str(), &extname, ""); - std::vector<ControllerEmu*>::const_iterator - ai = ((Extension*)this)->attachments.begin(), - ae = ((Extension*)this)->attachments.end(); - for (; ai!=ae; ++ai,++n) + for (auto& ai : ext->attachments) { - (*ai)->default_device.FromString(defdev); - (*ai)->LoadConfig(sec, base + (*ai)->GetName() + "/"); + ai->default_device.FromString(defdev); + ai->LoadConfig(sec, base + ai->GetName() + "/"); - if ((*ai)->GetName() == extname) - ex->switch_extension = n; + if (ai->GetName() == extname) + ext->switch_extension = n; + + n++; } } } @@ -163,47 +93,35 @@ void ControllerEmu::LoadConfig(IniFile::Section *sec, const std::string& base) sec->Get((base + "Device").c_str(), &defdev, ""); default_device.FromString(defdev); } - std::vector<ControlGroup*>::const_iterator i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) - (*i)->LoadConfig(sec, defdev, base); + + for (auto& cg : groups) + cg->LoadConfig(sec, defdev, base); } void ControllerEmu::ControlGroup::SaveConfig(IniFile::Section *sec, const std::string& defdev, const std::string& base) { std::string group(base + name); group += "/"; - // settings - std::vector<ControlGroup::Setting*>::const_iterator - si = settings.begin(), - se = settings.end(); - for (; si!=se; ++si) - sec->Set((group+(*si)->name).c_str(), (*si)->value*100.0f, (*si)->default_value*100.0f); - - // controls - std::vector<ControlGroup::Control*>::const_iterator - ci = controls.begin(), - ce = controls.end(); - for (; ci!=ce; ++ci) + for (auto& s : settings) + sec->Set((group + s->name).c_str(), s->value*100.0f, s->default_value*100.0f); + + for (auto& c : controls) { // control expression - sec->Set((group+(*ci)->name).c_str(), (*ci)->control_ref->expression, ""); + sec->Set((group + c->name).c_str(), c->control_ref->expression, ""); // range - sec->Set((group+(*ci)->name+"/Range").c_str(), (*ci)->control_ref->range*100.0f, 100.0f); + sec->Set((group + c->name + "/Range").c_str(), c->control_ref->range*100.0f, 100.0f); } // extensions - if (GROUP_TYPE_EXTENSION == type) + if (type == GROUP_TYPE_EXTENSION) { Extension* const ext = ((Extension*)this); sec->Set((base + name).c_str(), ext->attachments[ext->switch_extension]->GetName(), "None"); - std::vector<ControllerEmu*>::const_iterator - ai = ((Extension*)this)->attachments.begin(), - ae = ((Extension*)this)->attachments.end(); - for (; ai!=ae; ++ai) - (*ai)->SaveConfig(sec, base + (*ai)->GetName() + "/"); + for (auto& ai : ext->attachments) + ai->SaveConfig(sec, base + ai->GetName() + "/"); } } @@ -213,60 +131,58 @@ void ControllerEmu::SaveConfig(IniFile::Section *sec, const std::string& base) if (base.empty()) sec->Set((/*std::string(" ") +*/ base + "Device").c_str(), defdev, ""); - std::vector<ControlGroup*>::const_iterator i = groups.begin(), - e = groups.end(); - for (; i!=e; ++i) - (*i)->SaveConfig(sec, defdev, base); + for (auto& ctrlGroup : groups) + ctrlGroup->SaveConfig(sec, defdev, base); } ControllerEmu::AnalogStick::AnalogStick(const char* const _name) : ControlGroup(_name, GROUP_TYPE_STICK) { for (auto& named_direction : named_directions) - controls.push_back(new Input(named_direction)); + controls.emplace_back(new Input(named_direction)); - controls.push_back(new Input(_trans("Modifier"))); + controls.emplace_back(new Input(_trans("Modifier"))); - settings.push_back(new Setting(_trans("Radius"), 0.7f, 0, 100)); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); - settings.push_back(new Setting(_trans("Square Stick"), 0)); + settings.emplace_back(new Setting(_trans("Radius"), 0.7f, 0, 100)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Square Stick"), 0)); } ControllerEmu::Buttons::Buttons(const char* const _name) : ControlGroup(_name, GROUP_TYPE_BUTTONS) { - settings.push_back(new Setting(_trans("Threshold"), 0.5f)); + settings.emplace_back(new Setting(_trans("Threshold"), 0.5f)); } ControllerEmu::MixedTriggers::MixedTriggers(const char* const _name) : ControlGroup(_name, GROUP_TYPE_MIXED_TRIGGERS) { - settings.push_back(new Setting(_trans("Threshold"), 0.9f)); + settings.emplace_back(new Setting(_trans("Threshold"), 0.9f)); } ControllerEmu::Triggers::Triggers(const char* const _name) : ControlGroup(_name, GROUP_TYPE_TRIGGERS) { - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); } ControllerEmu::Slider::Slider(const char* const _name) : ControlGroup(_name, GROUP_TYPE_SLIDER) { - controls.push_back(new Input("Left")); - controls.push_back(new Input("Right")); + controls.emplace_back(new Input("Left")); + controls.emplace_back(new Input("Right")); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); } ControllerEmu::Force::Force(const char* const _name) : ControlGroup(_name, GROUP_TYPE_FORCE) { memset(m_swing, 0, sizeof(m_swing)); - controls.push_back(new Input(_trans("Up"))); - controls.push_back(new Input(_trans("Down"))); - controls.push_back(new Input(_trans("Left"))); - controls.push_back(new Input(_trans("Right"))); - controls.push_back(new Input(_trans("Forward"))); - controls.push_back(new Input(_trans("Backward"))); + controls.emplace_back(new Input(_trans("Up"))); + controls.emplace_back(new Input(_trans("Down"))); + controls.emplace_back(new Input(_trans("Left"))); + controls.emplace_back(new Input(_trans("Right"))); + controls.emplace_back(new Input(_trans("Forward"))); + controls.emplace_back(new Input(_trans("Backward"))); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); } ControllerEmu::Tilt::Tilt(const char* const _name) @@ -274,16 +190,16 @@ ControllerEmu::Tilt::Tilt(const char* const _name) { memset(m_tilt, 0, sizeof(m_tilt)); - controls.push_back(new Input("Forward")); - controls.push_back(new Input("Backward")); - controls.push_back(new Input("Left")); - controls.push_back(new Input("Right")); + controls.emplace_back(new Input("Forward")); + controls.emplace_back(new Input("Backward")); + controls.emplace_back(new Input("Left")); + controls.emplace_back(new Input("Right")); - controls.push_back(new Input(_trans("Modifier"))); + controls.emplace_back(new Input(_trans("Modifier"))); - settings.push_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); - settings.push_back(new Setting(_trans("Circle Stick"), 0)); - settings.push_back(new Setting(_trans("Angle"), 0.9f, 0, 180)); + settings.emplace_back(new Setting(_trans("Dead Zone"), 0, 0, 50)); + settings.emplace_back(new Setting(_trans("Circle Stick"), 0)); + settings.emplace_back(new Setting(_trans("Angle"), 0.9f, 0, 180)); } ControllerEmu::Cursor::Cursor(const char* const _name) @@ -291,14 +207,14 @@ ControllerEmu::Cursor::Cursor(const char* const _name) , m_z(0) { for (auto& named_direction : named_directions) - controls.push_back(new Input(named_direction)); - controls.push_back(new Input("Forward")); - controls.push_back(new Input("Backward")); - controls.push_back(new Input(_trans("Hide"))); - - settings.push_back(new Setting(_trans("Center"), 0.5f)); - settings.push_back(new Setting(_trans("Width"), 0.5f)); - settings.push_back(new Setting(_trans("Height"), 0.5f)); + controls.emplace_back(new Input(named_direction)); + controls.emplace_back(new Input("Forward")); + controls.emplace_back(new Input("Backward")); + controls.emplace_back(new Input(_trans("Hide"))); + + settings.emplace_back(new Setting(_trans("Center"), 0.5f)); + settings.emplace_back(new Setting(_trans("Width"), 0.5f)); + settings.emplace_back(new Setting(_trans("Height"), 0.5f)); } |
