From 89c6d41e9c7886fe56550a721671c848b7d4dbb4 Mon Sep 17 00:00:00 2001 From: Baitinq Date: Sun, 18 Dec 2022 21:28:11 +0100 Subject: [PATCH] Snake: Add snake color chooser game menu action This patch makes use of a new "set_snake_base_color()" function to change the snake's base color to the picked value. --- Userland/Games/Snake/SnakeGame.h | 2 ++ Userland/Games/Snake/main.cpp | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/Userland/Games/Snake/SnakeGame.h b/Userland/Games/Snake/SnakeGame.h index 66ced4df6b..ae7fcfd752 100644 --- a/Userland/Games/Snake/SnakeGame.h +++ b/Userland/Games/Snake/SnakeGame.h @@ -22,6 +22,8 @@ public: void pause(); void reset(); + void set_snake_base_color(Color color) { m_snake_base_color = color; }; + private: explicit SnakeGame(NonnullRefPtrVector food_bitmaps); diff --git a/Userland/Games/Snake/main.cpp b/Userland/Games/Snake/main.cpp index 23a8697261..7c8e99daf0 100644 --- a/Userland/Games/Snake/main.cpp +++ b/Userland/Games/Snake/main.cpp @@ -13,6 +13,7 @@ #include #include #include +#include #include #include #include @@ -68,6 +69,13 @@ ErrorOr serenity_main(Main::Arguments arguments) action.set_icon(pause_icon); } }))); + TRY(game_menu->try_add_action(GUI::Action::create("&Change snake color", TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/color-chooser.png"sv)), [&](auto&) { + 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(); + }))); TRY(game_menu->try_add_separator()); TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) { GUI::Application::the()->quit();