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;