// Copyright 2018 Dolphin Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later #pragma once class InputConfig; namespace ControllerEmu { class EmulatedController; } #include #include namespace InputProfile { std::vector GetProfilesFromSetting(const std::string& setting, const std::string& root); enum class CycleDirection : int { Forward = 1, Backward = -1 }; class ProfileCycler { public: void NextWiimoteProfile(int controller_index); void PreviousWiimoteProfile(int controller_index); void NextWiimoteProfileForGame(int controller_index); void PreviousWiimoteProfileForGame(int controller_index); private: void CycleProfile(CycleDirection cycle_direction, InputConfig* device_configuration, int& profile_index, int controller_index); void CycleProfileForGame(CycleDirection cycle_direction, InputConfig* device_configuration, int& profile_index, const std::string& setting, int controller_index); std::vector GetProfilesForDevice(InputConfig* device_configuration); std::string GetProfile(CycleDirection cycle_direction, int& profile_index, const std::vector& profiles); std::vector GetMatchingProfilesFromSetting(const std::string& setting, const std::vector& profiles, InputConfig* device_configuration); void UpdateToProfile(const std::string& profile_filename, ControllerEmu::EmulatedController* controller, InputConfig* device_configuration); std::string GetWiimoteInputProfilesForGame(int controller_index); int m_wiimote_profile_index = 0; }; } // namespace InputProfile