diff --git a/Userland/Games/Hearts/Game.cpp b/Userland/Games/Hearts/Game.cpp index efc550ff03..10554b9034 100644 --- a/Userland/Games/Hearts/Game.cpp +++ b/Userland/Games/Hearts/Game.cpp @@ -337,11 +337,23 @@ void Game::continue_game_after_delay(int interval_ms) void Game::advance_game() { - if (game_ended()) { + if (m_state == State::Play && game_ended()) { + m_state = State::GameEndedWaiting; on_status_change("Game ended."); + continue_game_after_delay(2000); return; } + if (m_state == State::GameEndedWaiting) { + m_state = State::GameEnded; + if (!m_players[0].is_human) + setup(move(m_players[0].name)); + return; + } + + if (m_state == State::GameEnded) + return; + if (m_state == State::PassingSelect) { if (!m_players[0].is_human) { select_cards_for_passing(); diff --git a/Userland/Games/Hearts/Game.h b/Userland/Games/Hearts/Game.h index 20e8385200..0447c656b0 100644 --- a/Userland/Games/Hearts/Game.h +++ b/Userland/Games/Hearts/Game.h @@ -77,6 +77,8 @@ private: PassingSelectConfirmed, PassingAccept, Play, + GameEndedWaiting, + GameEnded, }; State m_state { State::PassingSelect };