Updated to dll version 5.81 (IE 5.01).
[wine.git] / programs / winemine / main.h
blobd32c57a0b80dece00da020868ee739b50229efc6
1 #include <windows.h>
3 #define BEGINNER_MINES 10
4 #define BEGINNER_COLS 8
5 #define BEGINNER_ROWS 8
7 #define ADVANCED_MINES 40
8 #define ADVANCED_COLS 16
9 #define ADVANCED_ROWS 16
11 #define EXPERT_MINES 99
12 #define EXPERT_COLS 30
13 #define EXPERT_ROWS 16
15 #define MAX_COLS 30
16 #define MAX_ROWS 24
18 #define BOTTOM_MARGIN 20
19 #define BOARD_WMARGIN 5
20 #define BOARD_HMARGIN 5
22 /* mine defines */
23 #define MINE_WIDTH 16
24 #define MINE_HEIGHT 16
25 #define LED_WIDTH 12
26 #define LED_HEIGHT 23
27 #define FACE_WIDTH 24
28 #define FACE_HEIGHT 24
30 typedef enum { SPRESS_BMP, COOL_BMP, DEAD_BMP, OOH_BMP, SMILE_BMP } FACE_BMP;
32 typedef enum { WAITING, PLAYING, GAMEOVER, WON } GAME_STATUS;
34 typedef enum {
35 MPRESS_BMP, ONE_BMP, TWO_BMP, THREE_BMP, FOUR_BMP, FIVE_BMP, SIX_BMP,
36 SEVEN_BMP, EIGHT_BMP, BOX_BMP, FLAG_BMP, QUESTION_BMP, EXPLODE_BMP,
37 WRONG_BMP, MINE_BMP, QPRESS_BMP
38 } MINEBMP_OFFSET;
40 typedef enum { BEGINNER, ADVANCED, EXPERT, CUSTOM } DIFFICULTY;
42 typedef struct tagBOARD
44 BOOL IsMarkQ;
45 HDC hdc;
46 HINSTANCE hInst;
47 HWND hWnd;
48 HBITMAP hMinesBMP;
49 HBITMAP hFacesBMP;
50 HBITMAP hLedsBMP;
51 RECT mines_rect;
52 RECT face_rect;
53 RECT timer_rect;
54 RECT counter_rect;
56 unsigned width;
57 unsigned height;
58 POINT pos;
60 unsigned time;
61 unsigned num_flags;
62 unsigned boxes_left;
63 unsigned num_mines;
65 /* difficulty info */
66 unsigned rows;
67 unsigned cols;
68 unsigned mines;
69 char best_name [3][16];
70 unsigned best_time [3];
71 DIFFICULTY difficulty;
73 POINT press;
75 /* defines for mb */
76 #define MB_NONE 0
77 #define MB_LEFTDOWN 1
78 #define MB_LEFTUP 2
79 #define MB_RIGHTDOWN 3
80 #define MB_RIGHTUP 4
81 #define MB_BOTHDOWN 5
82 #define MB_BOTHUP 6
83 unsigned mb;
85 FACE_BMP face_bmp;
86 GAME_STATUS status;
87 struct BOX_STRUCT
89 unsigned IsMine : 1;
90 unsigned IsPressed : 1;
91 unsigned FlagType : 2;
92 unsigned NumMines : 4;
93 } box [MAX_COLS + 2] [MAX_ROWS + 2];
95 /* defines for FlagType */
96 #define NORMAL 0
97 #define QUESTION 1
98 #define FLAG 2
99 #define COMPLETE 3
101 } BOARD;
103 void ExitApp( int error );
105 void InitBoard( BOARD *p_board );
107 void LoadBoard( BOARD *p_board );
109 void SaveBoard( BOARD *p_board );
111 void DestroyBoard( BOARD *p_board );
113 void SetDifficulty( BOARD *p_board, DIFFICULTY difficulty );
115 void CheckLevel( BOARD *p_board );
117 void CreateBoard( BOARD *p_board );
119 void CreateBoxes( BOARD *p_board );
121 void TestBoard( HWND hWnd, BOARD *p_board, unsigned x, unsigned y, int msg );
123 void TestMines( BOARD *p_board, POINT pt, int msg );
125 void TestFace( BOARD *p_board, POINT pt, int msg );
127 void DrawBoard( HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board );
129 void DrawMines( HDC hdc, HDC hMemDC, BOARD *p_board );
131 void DrawMine( HDC hdc, HDC hMemDC, BOARD *p_board, unsigned col, unsigned row, BOOL IsPressed );
133 void AddFlag( BOARD *p_board, unsigned col, unsigned row );
135 void CompleteBox( BOARD *p_board, unsigned col, unsigned row );
137 void CompleteBoxes( BOARD *p_board, unsigned col, unsigned row );
139 void PressBox( BOARD *p_board, unsigned col, unsigned row );
141 void PressBoxes( BOARD *p_board, unsigned col, unsigned row );
143 void UnpressBox( BOARD *p_board, unsigned col, unsigned row );
145 void UnpressBoxes( BOARD *p_board, unsigned col, unsigned row );
147 void UpdateTimer( BOARD *p_board );
149 void DrawLeds( HDC hdc, HDC hMemDC, BOARD *p_board, int number, int x, int y);
151 void DrawFace( HDC hdc, HDC hMemDC, BOARD *p_board );
153 LRESULT WINAPI MainProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
155 BOOL CALLBACK CustomDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
157 BOOL CALLBACK CongratsDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
159 BOOL CALLBACK TimesDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
161 BOOL CALLBACK AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
163 /* end of header */