]> git.saurik.com Git - wxWidgets.git/blobdiff - demos/bombs/bombs.h
Fix wrong configure test for abi::__forced_unwind in previous commit.
[wxWidgets.git] / demos / bombs / bombs.h
index 9684acac8852df739afd3da34984819db138eb20..52ee72bd9deaca74f48f51a4b834665697951ba0 100644 (file)
 // Name:        bombs.h
 // Purpose:     Bombs game
 // Author:      P. Foggia 1996
-// Modified by:
+// Modified by: Wlodzimierz Skiba (ABX) since 2003
 // Created:     1996
 // RCS-ID:      $Id$
 // Copyright:   (c) 1996 P. Foggia
 // Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
-#ifndef _INC_BOMBS_H
-#define _INC_BOMBS_H
+#ifndef _WX_DEMOS_BOMBS_BOMBS_H_
+#define _WX_DEMOS_BOMBS_BOMBS_H_
 
 #include "game.h"
 
-/*
- * Forward declarations of all top-level window classes.
- */
-class  BombsFrameClass;
-class  AboutFrameClass;
+class BombsFrame;
 
 /*
  * Class representing the entire Application
  */
-class AppClass: public wxApp
+class BombsApp: public wxApp
 {
- public:
-  BombsFrameClass *BombsFrame;
-  int level;
-  BombsGame Game;
+public:
+    virtual bool OnInit();
+
+private :
+    BombsFrame *m_frame;
+
+    BombsGame m_game;
 
-  bool OnInit();
 };
 
-DECLARE_APP(AppClass)
+DECLARE_APP(BombsApp)
 
-class BombsCanvasClass;
+class BombsCanvas;
 
-class BombsFrameClass: public wxFrame
+class BombsFrame : public wxFrame
 {
- private:
- protected:
- public:
-  // Subwindows for reference within the program.
-  BombsCanvasClass *BombsCanvas;
-  wxMenuBar *menuBar;
-
-  // Constructor and destructor
-  BombsFrameClass(wxFrame *parent, const wxString& title, const wxPoint& pos, const wxSize& size, long style);
-  ~BombsFrameClass(void);
-
- void OnCloseWindow(wxCloseEvent& event);
- void OnExit(wxCommandEvent& event);
- void OnRestart(wxCommandEvent& event);
- void OnAbout(wxCommandEvent& event);
- void OnEasy(wxCommandEvent& event);
- void OnMedium(wxCommandEvent& event);
- void OnDifficult(wxCommandEvent& event);
-
-DECLARE_EVENT_TABLE()
+public:
+
+    BombsFrame(BombsGame *bombsGame);
+
+    void NewGame(int level, bool query);
+
+private:
+
+    void OnNewGame(wxCommandEvent& event);
+    void OnEasyGame(wxCommandEvent& event);
+    void OnMediumGame(wxCommandEvent& event);
+    void OnHardGame(wxCommandEvent& event);
+
+    void OnEasyCorner(wxCommandEvent& event);
+
+    void OnExit(wxCommandEvent& event);
+
+    void OnAbout(wxCommandEvent& event);
+
+    BombsGame *m_game;
+    bool m_easyCorner;
+    int m_lastLevel;
+
+    // Subwindows for reference within the program.
+    BombsCanvas *m_canvas;
+
+    DECLARE_EVENT_TABLE()
 };
 
-/* Menu identifiers
- */
-// File
-#define BOMBSFRAMECLASS_FILE 1
-// E&xit
-#define IDM_EXIT 2
-// About...
-#define IDM_ABOUT 3
-// Game
-#define BOMBSFRAMECLASS_GAME 4
-// &Restart
-#define IDM_RESTART 5
-// &Easy
-#define IDM_EASY 6
-// &Medium
-#define IDM_MEDIUM 7
-// &Difficult
-#define IDM_DIFFICULT 8
-
-class BombsCanvasClass: public wxWindow
+// App specific menu identifiers
+enum
 {
- private:
- protected:
- public:
-   int field_width, field_height;
-   int x_cell, y_cell;
-   wxBitmap *bmp;
-  // Constructor and destructor
-  BombsCanvasClass(wxFrame *parent, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = 0);
-  ~BombsCanvasClass(void);
-
- void OnPaint(wxPaintEvent& event);
- void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2);
- void Refresh(int xc1, int yc1, int xc2, int yc2);
- void OnEvent(wxMouseEvent& event);
- void UpdateFieldSize();
-
-DECLARE_EVENT_TABLE()
+    bombsID_LEVEL = wxID_HIGHEST,
+    bombsID_EASY,
+    bombsID_MEDIUM,
+    bombsID_HARD,
+    bombsID_EASYCORNER
 };
 
-/* Menu identifiers
- */
+class BombsCanvas : public wxPanel
+{
+public:
+
+    // Constructor and destructor
+
+    BombsCanvas(wxFrame *parent, BombsGame *game);
+
+    void UpdateGridSize();
+
+    wxSize GetGridSizeInPixels() const;
+
+    virtual ~BombsCanvas();
+
+private:
+
+    void OnPaint(wxPaintEvent& event);
+    void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2);
+    void RefreshField(int xc1, int yc1, int xc2, int yc2);
+    void Uncover(int x, int y);
+    void OnMouseEvent(wxMouseEvent& event);
+    void OnChar(wxKeyEvent& event);
+
+    BombsGame *m_game;
+
+    wxBitmap *m_bmp;
+
+    // Cell size in pixels
+    int m_cellWidth;
+    int m_cellHeight;
+
+    DECLARE_EVENT_TABLE()
+};
 
 /* The following sizes should probably be redefined */
 /* dimensions of a scroll unit, in pixels */
@@ -110,10 +116,14 @@ DECLARE_EVENT_TABLE()
 #define Y_UNIT 4
 
 /* the dimensions of a cell, in scroll units are in
- * BombsCanvasClass::x_cell and y_cell
+ * BombsCanvas::x_cell and y_cell
  */
 
+#ifdef __WXWINCE__
+#define BOMBS_FONT wxFont(12, wxSWISS, wxNORMAL, wxNORMAL)
+#else
 #define BOMBS_FONT wxFont(14, wxROMAN, wxNORMAL, wxNORMAL)
+#endif
 
-#endif /* mutual exclusion */
+#endif // #ifndef _WX_DEMOS_BOMBS_BOMBS_H_