X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/ae3dd4a589f4c8378c6a46bfceb4c87316360ca2..ddf9d04fe9c4aa5d7319c5eb7eabcf781a157c3d:/demos/forty/game.cpp diff --git a/demos/forty/game.cpp b/demos/forty/game.cpp index e7c47b9b9f..e137996530 100644 --- a/demos/forty/game.cpp +++ b/demos/forty/game.cpp @@ -72,6 +72,30 @@ Game::Game(int wins, int games, int score) : } +void Game::Layout() +{ + int i; + + m_pack->SetPos(2, 2 + 4 * (CardHeight + 2)); + + m_discard->SetPos(2, 2 + 5 * (CardHeight + 2)); + + for (i = 0; i < 8; i++) + { + m_foundations[i]->SetPos(2 + (i / 4) * (CardWidth + 2), + 2 + (i % 4) * (CardHeight + 2)); + } + + for (i = 0; i < 10; i++) + { + m_bases[i]->SetPos(8 + (i + 2) * (CardWidth + 2), 2); + } + delete m_bmap; + delete m_bmapCard; + m_bmap = 0; + m_bmapCard = 0; +} + // Make sure we delete all objects created by the game object Game::~Game() { @@ -155,12 +179,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); + } + } }