BrickGame: Add a "Pause" option to the Game menu

This is how the menu looks like after this commit:
┌────┐
│Game│ Help
├────┴─────────────────────────────┐
│   New game                   F2  │
│   Toggle pause                P  │
├──────────────────────────────────┤
│   Quit                   Alt+F4  │
└──────────────────────────────────┘
This commit is contained in:
Karol Baraniecki 2023-03-08 21:57:17 +01:00 committed by Brian Gianforcaro
parent a337557658
commit ddac8192e3
Notes: sideshowbarker 2024-07-17 01:13:25 +09:00
3 changed files with 11 additions and 2 deletions

View file

@ -446,6 +446,12 @@ void BrickGame::reset()
update();
}
void BrickGame::toggle_pause()
{
m_brick_game->toggle_pause();
update();
}
void BrickGame::timer_event(Core::TimerEvent&)
{
switch (m_brick_game->state()) {
@ -466,8 +472,7 @@ void BrickGame::keydown_event(GUI::KeyEvent& event)
switch (event.key()) {
case KeyCode::Key_Escape:
case KeyCode::Key_P:
m_brick_game->toggle_pause();
update();
toggle_pause();
return;
default:
break;

View file

@ -18,6 +18,7 @@ public:
virtual ~BrickGame() override = default;
void reset();
void toggle_pause();
private:
BrickGame(StringView app_name);

View file

@ -56,6 +56,9 @@ ErrorOr<int> serenity_main(Main::Arguments arguments)
TRY(game_menu->try_add_action(GUI::Action::create("&New Game", { Mod_None, Key_F2 }, TRY(Gfx::Bitmap::load_from_file("/res/icons/16x16/reload.png"sv)), [&](auto&) {
game->reset();
})));
TRY(game_menu->try_add_action(GUI::Action::create("Toggle &pause", { Mod_None, Key_P }, [&](auto&) {
game->toggle_pause();
})));
TRY(game_menu->try_add_separator());
TRY(game_menu->try_add_action(GUI::CommonActions::make_quit_action([](auto&) {
GUI::Application::the()->quit();