summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Frederic <juni@fat.fm>2022-04-02 16:52:58 +0200
committerAndreas Kling <kling@serenityos.org>2022-04-15 00:13:09 +0200
commit740beea5ce3b23b46472b3d2dd00686f72922545 (patch)
treefaf4d473f241b6840e89902d6d9cc935dc8d1394
parenta4639fced91d74a9532e68fe9014a876ff0bfef1 (diff)
downloadserenity-740beea5ce3b23b46472b3d2dd00686f72922545.zip
Pong: Add 'New Game' action
This declares Game::reset() public and lets the menu action invoke it.
-rw-r--r--Userland/Games/Pong/Game.h3
-rw-r--r--Userland/Games/Pong/main.cpp9
2 files changed, 10 insertions, 2 deletions
diff --git a/Userland/Games/Pong/Game.h b/Userland/Games/Pong/Game.h
index ef7a793688..ebde760724 100644
--- a/Userland/Games/Pong/Game.h
+++ b/Userland/Games/Pong/Game.h
@@ -28,6 +28,8 @@ public:
virtual ~Game() override = default;
+ void reset();
+
private:
Game();
@@ -37,7 +39,6 @@ private:
virtual void timer_event(Core::TimerEvent&) override;
virtual void track_mouse_move(Gfx::IntPoint const&) override;
- void reset();
void reset_ball(int serve_to_player);
void reset_paddles();
void tick();
diff --git a/Userland/Games/Pong/main.cpp b/Userland/Games/Pong/main.cpp
index fb3accfc3f..fc9fd1c8e4 100644
--- a/Userland/Games/Pong/main.cpp
+++ b/Userland/Games/Pong/main.cpp
@@ -37,10 +37,17 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
window->set_icon(app_icon.bitmap_for_size(16));
window->set_title("Pong");
window->set_double_buffering_enabled(false);
- (void)TRY(window->try_set_main_widget<Pong::Game>());
+ auto game = TRY(window->try_set_main_widget<Pong::Game>());
window->set_resizable(false);
auto game_menu = TRY(window->try_add_menu("&Game"));
+
+ TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::try_load_from_file("/res/icons/16x16/reload.png")), [&](auto&) {
+ game->reset();
+ })));
+
+ TRY(game_menu->try_add_separator());
+
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();
})));