From f4a4dc7de7f03635a9d58fb49d3c9be2ab1dbc0c Mon Sep 17 00:00:00 2001 From: Stepland <16676308+Stepland@users.noreply.github.com> Date: Sun, 8 Mar 2020 03:25:07 +0100 Subject: [PATCH] Key Mapping menu --- CHANGELOG.md | 1 + TODO.md | 2 - meson.build | 6 +- src/Data/KeyMapping.cpp | 9 +- src/Data/KeyMapping.hpp | 1 + src/Data/Preferences.hpp | 3 +- src/Screens/MusicSelect/MusicSelect.cpp | 11 +- src/Screens/MusicSelect/MusicSelect.hpp | 3 +- .../MusicSelect/Options/InputRemap.cpp | 201 ++++++++++++++++++ .../MusicSelect/Options/InputRemap.hpp | 68 ++++++ .../MusicSelect/{ => Options}/OptionPage.cpp | 22 +- .../MusicSelect/{ => Options}/OptionPage.hpp | 22 +- .../MusicSelect/Panels/SubpagePanel.cpp | 2 +- src/Screens/MusicSelect/SharedResources.cpp | 2 +- src/Toolkit/NormalizedOrigin.hpp | 6 + 15 files changed, 341 insertions(+), 18 deletions(-) create mode 100644 src/Screens/MusicSelect/Options/InputRemap.cpp create mode 100644 src/Screens/MusicSelect/Options/InputRemap.hpp rename src/Screens/MusicSelect/{ => Options}/OptionPage.cpp (75%) rename src/Screens/MusicSelect/{ => Options}/OptionPage.hpp (69%) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8a66808..0fa3419 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -33,6 +33,7 @@ - Options menu - Marker Selection - Fix screen filter not resizing properly + - Controller mapping ## Misc - Handling Resolution changes diff --git a/TODO.md b/TODO.md index 7479123..34c0557 100644 --- a/TODO.md +++ b/TODO.md @@ -2,8 +2,6 @@ ## Misc ## Music Select Screen -- Options menu - - Controller mapping - Visible controls - Start Button diff --git a/meson.build b/meson.build index 0bfe78b..c4950e7 100644 --- a/meson.build +++ b/meson.build @@ -53,8 +53,10 @@ sources = [ 'src/Screens/MusicSelect/MusicPreview.cpp', 'src/Screens/MusicSelect/MusicSelect.hpp', 'src/Screens/MusicSelect/MusicSelect.cpp', - 'src/Screens/MusicSelect/OptionPage.hpp', - 'src/Screens/MusicSelect/OptionPage.cpp', + 'src/Screens/MusicSelect/Options/OptionPage.hpp', + 'src/Screens/MusicSelect/Options/OptionPage.cpp', + 'src/Screens/MusicSelect/Options/InputRemap.hpp', + 'src/Screens/MusicSelect/Options/InputRemap.cpp', 'src/Screens/MusicSelect/Panels/MarkerPanel.hpp', 'src/Screens/MusicSelect/Panels/MarkerPanel.cpp', 'src/Screens/MusicSelect/Panels/Panel.hpp', diff --git a/src/Data/KeyMapping.cpp b/src/Data/KeyMapping.cpp index 4a623e9..af12377 100644 --- a/src/Data/KeyMapping.cpp +++ b/src/Data/KeyMapping.cpp @@ -30,7 +30,14 @@ namespace Data { for (auto &&[button, key] : m_button_to_key) { m_key_to_button[key] = button; } - + assert((m_button_to_key.size() == m_key_to_button.size())); + } + + KeyMapping::KeyMapping(std::unordered_map key_to_button) : m_key_to_button(key_to_button) { + for (auto &&[key, button] : m_key_to_button) { + m_button_to_key[button] = key; + } + assert((m_button_to_key.size() == m_key_to_button.size())); } void KeyMapping::set_button_to_key(const Button& button, const sf::Keyboard::Key& key) { diff --git a/src/Data/KeyMapping.hpp b/src/Data/KeyMapping.hpp index f9d2e39..288a11e 100644 --- a/src/Data/KeyMapping.hpp +++ b/src/Data/KeyMapping.hpp @@ -16,6 +16,7 @@ namespace Data { public: KeyMapping(); explicit KeyMapping(std::unordered_map button_to_key); + explicit KeyMapping(std::unordered_map button_to_key); void set_button_to_key(const Button& button, const sf::Keyboard::Key& key); std::optional