From ebf5c08b05d2a1dff8c944383b5106de3b41a040 Mon Sep 17 00:00:00 2001 From: Stepland <16676308+Stepland@users.noreply.github.com> Date: Thu, 30 Apr 2020 11:11:23 +0200 Subject: [PATCH] Allow exiting MusicSelect::Screen without a chart selected --- src/Main.cpp | 6 +++++- src/Screens/MusicSelect/MusicSelect.cpp | 9 ++++++--- src/Screens/MusicSelect/MusicSelect.hpp | 3 ++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Main.cpp b/src/Main.cpp index bc40ea9..a69d430 100644 --- a/src/Main.cpp +++ b/src/Main.cpp @@ -38,7 +38,11 @@ int main(int, char const **) { settings }; auto chart = music_select.select_chart(window); - std::cout << "Selected Chart : " << chart.song.title << " [" << chart.difficulty << "]" << std::endl; + if (chart) { + std::cout << "Selected Chart : " << chart->song.title << " [" << chart->difficulty << "]" << std::endl; + } else { + std::cout << "Exited MusicSelect::Screen without selecting a chart" << std::endl; + } /* while (true) { diff --git a/src/Screens/MusicSelect/MusicSelect.cpp b/src/Screens/MusicSelect/MusicSelect.cpp index 58c3ca3..f11dcaa 100644 --- a/src/Screens/MusicSelect/MusicSelect.cpp +++ b/src/Screens/MusicSelect/MusicSelect.cpp @@ -27,7 +27,7 @@ MusicSelect::Screen::Screen(const Data::SongList& t_song_list, SharedResources& std::cout << "loaded MusicSelect::Screen" << std::endl; } -Data::SongDifficulty MusicSelect::Screen::select_chart(sf::RenderWindow& window) { +std::optional MusicSelect::Screen::select_chart(sf::RenderWindow& window) { window.setFramerateLimit(60); ImGui::SFML::Init(window); sf::Clock imguiClock; @@ -94,8 +94,11 @@ Data::SongDifficulty MusicSelect::Screen::select_chart(sf::RenderWindow& window) resources.music_preview.update(); } ImGui::SFML::Shutdown(); - assert((resources.selected_panel.has_value())); - return *resources.selected_panel->obj.get_selected_difficulty(); + if (resources.selected_panel) { + return resources.selected_panel->obj.get_selected_difficulty(); + } else { + return {}; + } } void MusicSelect::Screen::draw_debug() { diff --git a/src/Screens/MusicSelect/MusicSelect.hpp b/src/Screens/MusicSelect/MusicSelect.hpp index 3be1eb1..668c51b 100644 --- a/src/Screens/MusicSelect/MusicSelect.hpp +++ b/src/Screens/MusicSelect/MusicSelect.hpp @@ -1,6 +1,7 @@ #pragma once #include +#include #include #include @@ -29,7 +30,7 @@ namespace MusicSelect { const Data::SongList& t_song_list, SharedResources& t_resources ); - Data::SongDifficulty select_chart(sf::RenderWindow& window); + std::optional select_chart(sf::RenderWindow& window); void draw_debug() override; private: const Data::SongList song_list;