// Copyright 2017 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once #include #include #include #include #include "Common/CommonTypes.h" #include "Core/HW/WiimoteEmu/ExtensionPort.h" #include "InputCommon/ControllerEmu/ControlGroup/ControlGroup.h" #include "InputCommon/ControllerEmu/ControllerEmu.h" #include "InputCommon/ControllerEmu/Setting/NumericSetting.h" namespace ControllerEmu { // A container of the selected and available attachments // for configuration saving/loading purposes class Attachments : public ControlGroup { public: explicit Attachments(const std::string& name); void AddAttachment(std::unique_ptr att); u32 GetSelectedAttachment() const; void SetSelectedAttachment(u32 val); NumericSetting& GetSelectionSetting(); const std::vector>& GetAttachmentList() const; private: SettingValue m_selection_value; // This is here and not added to the list of numeric_settings because it's serialized differently, // by string (to be independent from the enum), and visualized differently in the UI. // For the rest, it's treated similarly to other numeric_settings in the group. NumericSetting m_selection_setting = { &m_selection_value, {""}, 0, 0, WiimoteEmu::ExtensionNumber::MAX - 1}; std::vector> m_attachments; }; } // namespace ControllerEmu