Tiny int17 printer fix.
[wine/multimedia.git] / programs / winemine / main.h
blob1f8b4cca91ab7addc765e51c64bbae2a1ed71a0e
1 /*
2 * Copyright 2000 Joshua Thielen <jt85296@ltu.edu>
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 #include <windows.h>
21 #define BEGINNER_MINES 10
22 #define BEGINNER_COLS 8
23 #define BEGINNER_ROWS 8
25 #define ADVANCED_MINES 40
26 #define ADVANCED_COLS 16
27 #define ADVANCED_ROWS 16
29 #define EXPERT_MINES 99
30 #define EXPERT_COLS 30
31 #define EXPERT_ROWS 16
33 #define MAX_COLS 30
34 #define MAX_ROWS 24
36 #define BOTTOM_MARGIN 20
37 #define BOARD_WMARGIN 5
38 #define BOARD_HMARGIN 5
40 /* mine defines */
41 #define MINE_WIDTH 16
42 #define MINE_HEIGHT 16
43 #define LED_WIDTH 12
44 #define LED_HEIGHT 23
45 #define FACE_WIDTH 24
46 #define FACE_HEIGHT 24
48 typedef enum { SPRESS_BMP, COOL_BMP, DEAD_BMP, OOH_BMP, SMILE_BMP } FACE_BMP;
50 typedef enum { WAITING, PLAYING, GAMEOVER, WON } GAME_STATUS;
52 typedef enum {
53 MPRESS_BMP, ONE_BMP, TWO_BMP, THREE_BMP, FOUR_BMP, FIVE_BMP, SIX_BMP,
54 SEVEN_BMP, EIGHT_BMP, BOX_BMP, FLAG_BMP, QUESTION_BMP, EXPLODE_BMP,
55 WRONG_BMP, MINE_BMP, QPRESS_BMP
56 } MINEBMP_OFFSET;
58 typedef enum { BEGINNER, ADVANCED, EXPERT, CUSTOM } DIFFICULTY;
60 typedef struct tagBOARD
62 BOOL IsMarkQ;
63 HDC hdc;
64 HINSTANCE hInst;
65 HWND hWnd;
66 HBITMAP hMinesBMP;
67 HBITMAP hFacesBMP;
68 HBITMAP hLedsBMP;
69 RECT mines_rect;
70 RECT face_rect;
71 RECT timer_rect;
72 RECT counter_rect;
74 unsigned width;
75 unsigned height;
76 POINT pos;
78 unsigned time;
79 unsigned num_flags;
80 unsigned boxes_left;
81 unsigned num_mines;
83 /* difficulty info */
84 unsigned rows;
85 unsigned cols;
86 unsigned mines;
87 char best_name [3][16];
88 unsigned best_time [3];
89 DIFFICULTY difficulty;
91 POINT press;
93 /* defines for mb */
94 #define MB_NONE 0
95 #define MB_LEFTDOWN 1
96 #define MB_LEFTUP 2
97 #define MB_RIGHTDOWN 3
98 #define MB_RIGHTUP 4
99 #define MB_BOTHDOWN 5
100 #define MB_BOTHUP 6
101 unsigned mb;
103 FACE_BMP face_bmp;
104 GAME_STATUS status;
105 struct BOX_STRUCT
107 unsigned IsMine : 1;
108 unsigned IsPressed : 1;
109 unsigned FlagType : 2;
110 unsigned NumMines : 4;
111 } box [MAX_COLS + 2] [MAX_ROWS + 2];
113 /* defines for FlagType */
114 #define NORMAL 0
115 #define QUESTION 1
116 #define FLAG 2
117 #define COMPLETE 3
119 } BOARD;
121 void ExitApp( int error );
123 void InitBoard( BOARD *p_board );
125 void LoadBoard( BOARD *p_board );
127 void SaveBoard( BOARD *p_board );
129 void DestroyBoard( BOARD *p_board );
131 void SetDifficulty( BOARD *p_board, DIFFICULTY difficulty );
133 void CheckLevel( BOARD *p_board );
135 void CreateBoard( BOARD *p_board );
137 void CreateBoxes( BOARD *p_board );
139 void TestBoard( HWND hWnd, BOARD *p_board, unsigned x, unsigned y, int msg );
141 void TestMines( BOARD *p_board, POINT pt, int msg );
143 void TestFace( BOARD *p_board, POINT pt, int msg );
145 void DrawBoard( HDC hdc, HDC hMemDC, PAINTSTRUCT *ps, BOARD *p_board );
147 void DrawMines( HDC hdc, HDC hMemDC, BOARD *p_board );
149 void DrawMine( HDC hdc, HDC hMemDC, BOARD *p_board, unsigned col, unsigned row, BOOL IsPressed );
151 void AddFlag( BOARD *p_board, unsigned col, unsigned row );
153 void CompleteBox( BOARD *p_board, unsigned col, unsigned row );
155 void CompleteBoxes( BOARD *p_board, unsigned col, unsigned row );
157 void PressBox( BOARD *p_board, unsigned col, unsigned row );
159 void PressBoxes( BOARD *p_board, unsigned col, unsigned row );
161 void UnpressBox( BOARD *p_board, unsigned col, unsigned row );
163 void UnpressBoxes( BOARD *p_board, unsigned col, unsigned row );
165 void UpdateTimer( BOARD *p_board );
167 void DrawLeds( HDC hdc, HDC hMemDC, BOARD *p_board, int number, int x, int y);
169 void DrawFace( HDC hdc, HDC hMemDC, BOARD *p_board );
171 LRESULT WINAPI MainProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam);
173 BOOL CALLBACK CustomDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
175 BOOL CALLBACK CongratsDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
177 BOOL CALLBACK TimesDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
179 BOOL CALLBACK AboutDlgProc( HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam );
181 /* end of header */