From fa60a0f163b77bc8dc04dfdb9a93927255ad3cf6 Mon Sep 17 00:00:00 2001 From: zv0n Date: Fri, 22 Jul 2022 12:23:16 +0200 Subject: [PATCH] Mario: added Yes/No dialog --- mario/CMakeLists.txt | 1 + mario/editor.cpp | 10 +- mario/scenes/editor_main.cpp | 14 ++- mario/scenes/editor_scenes.hpp | 4 + mario/scenes/yes_no_scene.cpp | 214 +++++++++++++++++++++++++++++++++ 5 files changed, 237 insertions(+), 6 deletions(-) create mode 100644 mario/scenes/yes_no_scene.cpp diff --git a/mario/CMakeLists.txt b/mario/CMakeLists.txt index 534129e..a93250c 100644 --- a/mario/CMakeLists.txt +++ b/mario/CMakeLists.txt @@ -90,6 +90,7 @@ target_sources(editor PRIVATE editor_visitor.cpp PRIVATE scenes/editor_main.cpp PRIVATE scenes/editor_main_menu.cpp + PRIVATE scenes/yes_no_scene.cpp ) target_compile_definitions(editor PUBLIC EDITOR) diff --git a/mario/editor.cpp b/mario/editor.cpp index 7165556..d7d1773 100644 --- a/mario/editor.cpp +++ b/mario/editor.cpp @@ -94,9 +94,13 @@ int main() { SDL_framerateDelay(&gFPS); SDL_PumpEvents(); std::lock_guard lock(render_mutex); - for(auto &scene : game_scenes) { - scene.additionalRender(scene.scene); - scene.scene->renderScene(false); + for (size_t i = 0; i < game_scenes.size(); i++) { + game_scenes[i].additionalRender(game_scenes[i].scene); + // additional renderer can remove scene from game_scenes, better + // check + if (i < game_scenes.size()) { + game_scenes[i].scene->renderScene(false); + } } renderer->presentRenderer(); frames++; diff --git a/mario/scenes/editor_main.cpp b/mario/scenes/editor_main.cpp index a4a7212..bfdd22e 100644 --- a/mario/scenes/editor_main.cpp +++ b/mario/scenes/editor_main.cpp @@ -1025,9 +1025,17 @@ void populateWorldType( scene->addObject(tool_text); } +void dialogFinishedTest(bool result) { + global_test_text_text = result ? "YEAH, BOI!" : "Nah, boi"; + setFlag(TEXT_UPDATE_FLAG); +} + void testButtonFunc(void * /*UNUSED*/, Button * /*UNUSED*/) { - setFlag(TEXT_INPUT_FLAG); - SDL_StartTextInput(); + game_scenes.push_back( + createYesNoScene(game_scenes.back().scene->getRendererShared(), "Yeah?", + dialogFinishedTest)); + /* setFlag(TEXT_INPUT_FLAG); + SDL_StartTextInput();*/ } void openMapEditor(std::shared_ptr &scene, @@ -1312,7 +1320,7 @@ createEditorMainScene(std::shared_ptr &renderer) { left_character_input.other_button = global_vars.buttons.back(); global_vars.buttons.emplace_back(std::make_shared