]> git.saurik.com Git - wxWidgets.git/blob - demos/bombs/bombs.h
Add wxCondition::Wait() overload that also tests the condition.
[wxWidgets.git] / demos / bombs / bombs.h
1 ///////////////////////////////////////////////////////////////////////////////
2 // Name: bombs.h
3 // Purpose: Bombs game
4 // Author: P. Foggia 1996
5 // Modified by: Wlodzimierz Skiba (ABX) since 2003
6 // Created: 1996
7 // Copyright: (c) 1996 P. Foggia
8 // Licence: wxWindows licence
9 ///////////////////////////////////////////////////////////////////////////////
10
11 #ifndef _WX_DEMOS_BOMBS_BOMBS_H_
12 #define _WX_DEMOS_BOMBS_BOMBS_H_
13
14 #include "game.h"
15
16 class BombsFrame;
17
18 /*
19 * Class representing the entire Application
20 */
21 class BombsApp: public wxApp
22 {
23 public:
24 virtual bool OnInit();
25
26 private :
27 BombsFrame *m_frame;
28
29 BombsGame m_game;
30
31 };
32
33 DECLARE_APP(BombsApp)
34
35 class BombsCanvas;
36
37 class BombsFrame : public wxFrame
38 {
39 public:
40
41 BombsFrame(BombsGame *bombsGame);
42
43 void NewGame(int level, bool query);
44
45 private:
46
47 void OnNewGame(wxCommandEvent& event);
48 void OnEasyGame(wxCommandEvent& event);
49 void OnMediumGame(wxCommandEvent& event);
50 void OnHardGame(wxCommandEvent& event);
51
52 void OnEasyCorner(wxCommandEvent& event);
53
54 void OnExit(wxCommandEvent& event);
55
56 void OnAbout(wxCommandEvent& event);
57
58 BombsGame *m_game;
59 bool m_easyCorner;
60 int m_lastLevel;
61
62 // Subwindows for reference within the program.
63 BombsCanvas *m_canvas;
64
65 DECLARE_EVENT_TABLE()
66 };
67
68 // App specific menu identifiers
69 enum
70 {
71 bombsID_LEVEL = wxID_HIGHEST,
72 bombsID_EASY,
73 bombsID_MEDIUM,
74 bombsID_HARD,
75 bombsID_EASYCORNER
76 };
77
78 class BombsCanvas : public wxPanel
79 {
80 public:
81
82 // Constructor and destructor
83
84 BombsCanvas(wxFrame *parent, BombsGame *game);
85
86 void UpdateGridSize();
87
88 wxSize GetGridSizeInPixels() const;
89
90 virtual ~BombsCanvas();
91
92 private:
93
94 void OnPaint(wxPaintEvent& event);
95 void DrawField(wxDC *, int xc1, int yc1, int xc2, int yc2);
96 void RefreshField(int xc1, int yc1, int xc2, int yc2);
97 void Uncover(int x, int y);
98 void OnMouseEvent(wxMouseEvent& event);
99 void OnChar(wxKeyEvent& event);
100
101 BombsGame *m_game;
102
103 wxBitmap *m_bmp;
104
105 // Cell size in pixels
106 int m_cellWidth;
107 int m_cellHeight;
108
109 DECLARE_EVENT_TABLE()
110 };
111
112 /* The following sizes should probably be redefined */
113 /* dimensions of a scroll unit, in pixels */
114 #define X_UNIT 4
115 #define Y_UNIT 4
116
117 /* the dimensions of a cell, in scroll units are in
118 * BombsCanvas::x_cell and y_cell
119 */
120
121 #ifdef __WXWINCE__
122 #define BOMBS_FONT wxFont(12, wxSWISS, wxNORMAL, wxNORMAL)
123 #else
124 #define BOMBS_FONT wxFont(14, wxROMAN, wxNORMAL, wxNORMAL)
125 #endif
126
127 #endif // #ifndef _WX_DEMOS_BOMBS_BOMBS_H_
128