diff --git a/Userland/Games/Snake/Game.h b/Userland/Games/Snake/Game.h index da54250570..a58ecf7b25 100644 --- a/Userland/Games/Snake/Game.h +++ b/Userland/Games/Snake/Game.h @@ -20,6 +20,7 @@ public: virtual ~Game() override = default; + bool is_paused() const { return !has_timer(); } void start(); void pause(); void reset(); diff --git a/Userland/Games/Snake/main.cpp b/Userland/Games/Snake/main.cpp index 03b6dd38ad..53e3de7a85 100644 --- a/Userland/Games/Snake/main.cpp +++ b/Userland/Games/Snake/main.cpp @@ -94,10 +94,14 @@ ErrorOr serenity_main(Main::Arguments arguments) }))); TRY(game_menu->try_add_action(GUI::Action::create("&Change snake color", TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/color-chooser.png"sv)), [&](auto&) { game.pause(); + auto was_paused = game.is_paused(); + if (!was_paused) + game.pause(); auto dialog = GUI::ColorPicker::construct(Gfx::Color::White, window); if (dialog->exec() == GUI::Dialog::ExecResult::OK) game.set_snake_base_color(dialog->color()); - game.start(); + if (!was_paused) + game.start(); }))); TRY(game_menu->try_add_separator()); TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {