X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/d2fc28b197eb5268b3e017103df883551e13eaf8..fa699cbaaf217af186cd04dd10d6ec67c8667136:/demos/bombs/bombs.cpp?ds=sidebyside diff --git a/demos/bombs/bombs.cpp b/demos/bombs/bombs.cpp index 471c848a7f..2c756fcff3 100644 --- a/demos/bombs/bombs.cpp +++ b/demos/bombs/bombs.cpp @@ -2,17 +2,13 @@ // Name: bombs.cpp // Purpose: Bombs game // Author: P. Foggia 1996 -// Modified by: Wlodzimierz Skiba (ABX) 2003 +// Modified by: Wlodzimierz Skiba (ABX) since 2003 // Created: 1996 // RCS-ID: $Id$ // Copyright: (c) 1996 P. Foggia // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -# pragma implementation -#endif - #include "wx/wxprec.h" #ifdef __BORLANDC__ @@ -33,8 +29,7 @@ # include #endif -#if defined(__WXGTK__) || defined(__WXX11__) || defined(__WXMOTIF__) \ - || defined(__WXMAC__) || defined(__WXMGL__) +#ifndef wxHAS_IMAGES_IN_RESOURCES # include "bombs.xpm" #endif @@ -61,11 +56,13 @@ bool BombsApp::OnInit() } BEGIN_EVENT_TABLE(BombsFrame, wxFrame) - EVT_MENU(bombsID_EASY, BombsFrame::OnNewEasyGame) - EVT_MENU(bombsID_MEDIUM, BombsFrame::OnNewMediumGame) - EVT_MENU(bombsID_HARD, BombsFrame::OnNewHardGame) - EVT_MENU(wxID_EXIT, BombsFrame::OnExit) - EVT_MENU(wxID_ABOUT, BombsFrame::OnAbout) + EVT_MENU(wxID_NEW, BombsFrame::OnNewGame) + EVT_MENU(bombsID_EASY, BombsFrame::OnEasyGame) + EVT_MENU(bombsID_MEDIUM, BombsFrame::OnMediumGame) + EVT_MENU(bombsID_HARD, BombsFrame::OnHardGame) + EVT_MENU(bombsID_EASYCORNER, BombsFrame::OnEasyCorner) + EVT_MENU(wxID_EXIT, BombsFrame::OnExit) + EVT_MENU(wxID_ABOUT, BombsFrame::OnAbout) END_EVENT_TABLE() BombsFrame::BombsFrame(BombsGame *game) @@ -73,6 +70,8 @@ BombsFrame::BombsFrame(BombsGame *game) wxSize(300, 300), wxDEFAULT_DIALOG_STYLE|wxMINIMIZE_BOX) { m_game = game; + m_easyCorner = false; + m_lastLevel = bombsID_EASY; SetIcon(wxICON(bombs)); @@ -88,8 +87,9 @@ BombsFrame::BombsFrame(BombsGame *game) menuLevel->AppendRadioItem(bombsID_MEDIUM, wxT("&Medium (15x15)\tCtrl-2")); menuLevel->AppendRadioItem(bombsID_HARD, wxT("&Hard (25x20)\tCtrl-3")); - menuFile->Append(bombsID_NEWGAME, wxT("&New Game"), - menuLevel, wxT("Starts a new game")); + menuFile->Append(wxID_NEW, wxT("&New game\tCtrl-N")); + menuFile->Append(bombsID_LEVEL, wxT("&Level"),menuLevel, wxT("Starts a new game")); + menuFile->AppendCheckItem(bombsID_EASYCORNER, wxT("&Easy corner")); menuFile->AppendSeparator(); menuFile->Append(wxID_EXIT, wxGetStockLabel(wxID_EXIT), wxT("Quits the application")); @@ -137,6 +137,7 @@ void BombsFrame::NewGame(int level, bool query) } int numHorzCells = 20, numVertCells = 20; + m_lastLevel = level; switch(level) { @@ -157,7 +158,7 @@ void BombsFrame::NewGame(int level, bool query) break; } - m_game->Init(numHorzCells, numVertCells); + m_game->Init(numHorzCells, numVertCells, m_easyCorner); GetMenuBar()->Check(level, true); @@ -172,21 +173,50 @@ void BombsFrame::OnAbout(wxCommandEvent& WXUNUSED(event)) wxT("About wxBombs") ); } -void BombsFrame::OnNewEasyGame(wxCommandEvent& WXUNUSED(event)) +void BombsFrame::OnNewGame(wxCommandEvent& WXUNUSED(event)) +{ + NewGame(m_lastLevel, true); +} + +void BombsFrame::OnEasyGame(wxCommandEvent& WXUNUSED(event)) { NewGame(bombsID_EASY, true); } -void BombsFrame::OnNewMediumGame(wxCommandEvent& WXUNUSED(event)) +void BombsFrame::OnMediumGame(wxCommandEvent& WXUNUSED(event)) { NewGame(bombsID_MEDIUM, true); } -void BombsFrame::OnNewHardGame(wxCommandEvent& WXUNUSED(event)) +void BombsFrame::OnHardGame(wxCommandEvent& WXUNUSED(event)) { NewGame(bombsID_HARD, true); } +void BombsFrame::OnEasyCorner(wxCommandEvent& WXUNUSED(event)) +{ + wxString msg; + if(m_easyCorner) + msg = wxT("enable"); + else + msg = wxT("disable"); + + msg = wxT("Do you really want to ") + msg + wxT(" having\ntop left corner always empty for easier start?"); + + int ok = wxMessageBox( + msg, + wxT("Confirm"), + wxYES_NO | wxICON_QUESTION, + this + ); + + if(ok!=wxYES)return; + + m_easyCorner = !m_easyCorner; + + NewGame(m_lastLevel, true); +} + BEGIN_EVENT_TABLE(BombsCanvas, wxPanel) EVT_PAINT(BombsCanvas::OnPaint) EVT_MOUSE_EVENTS(BombsCanvas::OnMouseEvent) @@ -202,7 +232,7 @@ BombsCanvas::BombsCanvas(wxFrame *parent, BombsGame *game) wxFont font= BOMBS_FONT; dc.SetFont(font); - long chw, chh; + wxCoord chw, chh; wxString buf = wxT("M"); dc.GetTextExtent(buf, &chw, &chh);