]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/forty/game.cpp
wxMGL support
[wxWidgets.git] / demos / forty / game.cpp
index fa1a29e4341829c20a0c128382e52cd5ffc29255..9e4911741fd8173b7c88e549a87615c65acc472c 100644 (file)
@@ -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 &&