]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/forty/canvas.cpp
Tweaked the layout sample a bit for wxGridBagSizer
[wxWidgets.git] / demos / forty / canvas.cpp
index 384d2bebbed510408edc32908a312b31b432c08e..995e7cbfbfe1e0eea154a52ccbc05522a50b8a79 100644 (file)
@@ -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,7 +111,7 @@ void FortyCanvas::OnDraw(wxDC& dc)
                        m_game->DisplayScore(dc);
                        m_playerDialog->Destroy();
                        m_playerDialog = 0;
-                       Refresh();
+                        Refresh(false);
                }
                else
                {
@@ -117,16 +119,48 @@ void FortyCanvas::OnDraw(wxDC& dc)
                        ((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;
        }
@@ -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();
+}