X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/82ea63e6e046652bc0799badd9d62f91c9918dbe..3b50432abf11a0dbdab6b8d4136c3956ce4def1f:/demos/forty/game.cpp diff --git a/demos/forty/game.cpp b/demos/forty/game.cpp index fa1a29e434..9e4911741f 100644 --- a/demos/forty/game.cpp +++ b/demos/forty/game.cpp @@ -155,12 +155,42 @@ void Game::DoMove(wxDC& dc, Pile* src, Pile* dest) wxOK | wxICON_EXCLAMATION); } - if (!m_inPlay) + if (!m_inPlay) { m_inPlay = TRUE; m_numGames++; } - DisplayScore(dc); + DisplayScore(dc); + + if (HaveYouWon()) + { + wxWindow *frame = wxTheApp->GetTopWindow(); + wxWindow *canvas = (wxWindow *) NULL; + + if (frame) + { + wxNode *node = frame->GetChildren().First(); + if (node) canvas = (wxWindow*)node->Data(); + } + + // This game is over + m_inPlay = FALSE; + + // Redraw the score box to update games won + DisplayScore(dc); + + if (wxMessageBox("Do you wish to play again?", + "Well Done, You have won!", wxYES_NO | wxICON_QUESTION) == wxYES) + { + Deal(); + canvas->Refresh(); + } + else + { + // user cancelled the dialog - exit the app + ((wxFrame*)canvas->GetParent())->Close(TRUE); + } + } } @@ -410,8 +440,8 @@ void Game::LButtonDblClk(wxDC& dc, int x, int y) { for(i = 0; i < 4; i++) { - Card* m_topCard; - if ((m_topCard = m_foundations[i]->GetTopCard())) + Card* m_topCard = m_foundations[i]->GetTopCard(); + if ( m_topCard ) { if (m_topCard->GetSuit() == card->GetSuit() && m_foundations[i + 4] != pile &&