X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/70d26c3f4ffb24d50457d405c9595fd23f9e5b7c..85ac8ca017a0409e9762ed305ccc1d32a7c28fa7:/demos/forty/canvas.cpp diff --git a/demos/forty/canvas.cpp b/demos/forty/canvas.cpp index 384d2bebbe..8a5257d54c 100644 --- a/demos/forty/canvas.cpp +++ b/demos/forty/canvas.cpp @@ -38,12 +38,12 @@ BEGIN_EVENT_TABLE(FortyCanvas, wxScrolledWindow) EVT_MOUSE_EVENTS(FortyCanvas::OnMouseEvent) END_EVENT_TABLE() -FortyCanvas::FortyCanvas(wxWindow* parent, int x, int y, int w, int h) : - wxScrolledWindow(parent, -1, wxPoint(x, y), wxSize(w, h)), - m_helpingHand(TRUE), - m_rightBtnUndo(TRUE), +FortyCanvas::FortyCanvas(wxWindow* parent, const wxPoint& pos, const wxSize& size) : + wxScrolledWindow(parent, wxID_ANY, pos, size), + m_helpingHand(true), + m_rightBtnUndo(true), m_playerDialog(0), - m_leftBtnDown(FALSE) + m_leftBtnDown(false) { #ifdef __WXGTK__ m_font = wxTheFontList->FindOrCreateFont(12, wxROMAN, wxNORMAL, wxNORMAL); @@ -56,7 +56,7 @@ FortyCanvas::FortyCanvas(wxWindow* parent, int x, int y, int w, int h) : m_arrowCursor = new wxCursor(wxCURSOR_ARROW); wxString name = wxTheApp->GetAppName(); - if (name.Length() <= 0) name = "forty"; + if (name.Length() <= 0) name = _T("forty"); m_scoreFile = new ScoreFile(name); m_game = new Game(0, 0, 0); m_game->Deal(); @@ -68,6 +68,8 @@ FortyCanvas::~FortyCanvas() UpdateScores(); delete m_game; delete m_scoreFile; + delete m_handCursor; + delete m_arrowCursor; } @@ -92,7 +94,7 @@ void FortyCanvas::OnDraw(wxDC& dc) { dc.SetFont(* m_font); m_game->Redraw(dc); - +#if 0 // if player name not set (and selection dialog is not displayed) // then ask the player for their name if (m_player.Length() == 0 && !m_playerDialog) @@ -109,28 +111,60 @@ void FortyCanvas::OnDraw(wxDC& dc) m_game->DisplayScore(dc); m_playerDialog->Destroy(); m_playerDialog = 0; - Refresh(); + Refresh(false); } else { // user cancelled the dialog - exit the app - ((wxFrame*)GetParent())->Close(TRUE); + ((wxFrame*)GetParent())->Close(true); } } +#endif } +void FortyCanvas::ShowPlayerDialog() +{ + // if player name not set (and selection dialog is not displayed) + // then ask the player for their name + if (m_player.Length() == 0 && !m_playerDialog) + { + m_playerDialog = new PlayerSelectionDialog(this, m_scoreFile); + m_playerDialog->ShowModal(); + m_player = m_playerDialog->GetPlayersName(); + if (m_player.Length() > 0) + { + // user entered a name - lookup their score + int wins, games, score; + m_scoreFile->ReadPlayersScore(m_player, wins, games, score); + m_game->NewPlayer(wins, games, score); + + wxClientDC dc(this); + dc.SetFont(* m_font); + m_game->DisplayScore(dc); + m_playerDialog->Destroy(); + m_playerDialog = 0; + Refresh(false); + } + else + { + // user cancelled the dialog - exit the app + ((wxFrame*)GetParent())->Close(true); + } + } +} + /* Called when the main frame is closed */ bool FortyCanvas::OnCloseCanvas() { if (m_game->InPlay() && - wxMessageBox("Are you sure you want to\nabandon the current game?", - "Warning", wxYES_NO | wxICON_QUESTION) == wxNO) + wxMessageBox(_T("Are you sure you want to\nabandon the current game?"), + _T("Warning"), wxYES_NO | wxICON_QUESTION) == wxNO) { - return FALSE; + return false; } - return TRUE; + return true; } void FortyCanvas::OnMouseEvent(wxMouseEvent& event) @@ -146,7 +180,7 @@ void FortyCanvas::OnMouseEvent(wxMouseEvent& event) { if (m_leftBtnDown) { - m_leftBtnDown = FALSE; + m_leftBtnDown = false; ReleaseMouse(); m_game->LButtonUp(dc, mouseX, mouseY); } @@ -156,7 +190,7 @@ void FortyCanvas::OnMouseEvent(wxMouseEvent& event) { if (!m_leftBtnDown) { - m_leftBtnDown = TRUE; + m_leftBtnDown = true; CaptureMouse(); m_game->LButtonDown(dc, mouseX, mouseY); } @@ -165,14 +199,14 @@ void FortyCanvas::OnMouseEvent(wxMouseEvent& event) { if (m_leftBtnDown) { - m_leftBtnDown = FALSE; + m_leftBtnDown = false; ReleaseMouse(); m_game->LButtonUp(dc, mouseX, mouseY); } } else if (event.RightDown() && !event.LeftIsDown()) { - // only allow right button undo if m_rightBtnUndo is TRUE + // only allow right button undo if m_rightBtnUndo is true if (m_rightBtnUndo) { if (event.ControlDown() || event.ShiftDown()) @@ -198,25 +232,6 @@ void FortyCanvas::OnMouseEvent(wxMouseEvent& event) void FortyCanvas::SetCursorStyle(int x, int y) { - if (m_game->HaveYouWon()) - { - if (wxMessageBox("Do you wish to play again?", - "Well Done, You have won!", wxYES_NO | wxICON_QUESTION) == wxYES) - { - m_game->Deal(); - - wxClientDC dc(this); - PrepareDC(dc); - dc.SetFont(* m_font); - m_game->Redraw(dc); - } - else - { - // user cancelled the dialog - exit the app - ((wxFrame*)GetParent())->Close(TRUE); - } - } - // Only set cursor to a hand if 'helping hand' is enabled and // the card under the cursor can go somewhere if (m_game->CanYouGo(x, y) && m_helpingHand) @@ -251,3 +266,8 @@ void FortyCanvas::Redo() dc.SetFont(* m_font); m_game->Redo(dc); } + +void FortyCanvas::LayoutGame() +{ + m_game->Layout(); +}