1 /*
2 Copyright (C) 1994-1995 Apogee Software, Ltd.
3 
4 This program is free software; you can redistribute it and/or
5 modify it under the terms of the GNU General Public License
6 as published by the Free Software Foundation; either version 2
7 of the License, or (at your option) any later version.
8 
9 This program 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.
12 
13 See the GNU General Public License for more details.
14 
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
18 
19 */
20 #ifndef _rt_menu_private
21 #define _rt_menu_private
22 
23 //******************************************************************************
24 //
25 // Private Header for RT_MENU.C
26 //
27 //******************************************************************************
28 
29 #include "rt_in.h"
30 
31 //
32 // Specific Menu defines
33 //
34 
35 #define BORDCOLOR       0x29
36 #define BORD2COLOR      0x23
37 #define DEACTIVE        0x2b
38 #define BKGDCOLOR       0x2d
39 #define STRIPE          0x2c
40 
41 
42 #define SENSITIVE       60
43 #define CENTER          SENSITIVE*2
44 
45 
46 #define MENU_X          32
47 #define MENU_Y          16
48 #define MENU_W          235
49 #define MENU_H          14*9+4
50 
51 
52 #define LSM_X           180      //32
53 #define LSM_Y           16
54 #define LSM_W           80       //176
55 #define LSM_H           10*14+8
56 
57 #define LSA_X           96
58 #define LSA_Y           80
59 #define LSA_W           130
60 #define LSA_H           42
61 
62 
63 #define SM_X            32
64 #define SM_Y            52
65 #define SM_W            252
66 #define SM_H            35
67 
68 #define SM_Y1           20
69 #define SM_H1           4*14-9
70 #define SM_Y2           SM_Y1+5*14
71 #define SM_H2           4*14-9
72 #define SM_Y3           SM_Y2+5*14
73 #define SM_H3           3*14-9
74 
75 
76 #define CTL_X           19
77 #define CTL_Y           32
78 #define CTL_W           284
79 #define CTL_H           105
80 
81 
82 #define CST_X           20
83 #define CST_Y           43
84 #define CST_START       60
85 #define CST_SPC         60
86 
87 
88 #define TUF_X           0
89 #define TUF_Y           32
90 
91 
92 #define HLP_X           34
93 #define HLP_Y           63
94 #define HLP_W           264
95 #define HLP_H           51
96 
97 
98 #define MU_X            32
99 #define MU_Y            22
100 #define MU_W            252
101 #define MU_H            118
102 
103 
104 #define FX_X            32
105 #define FX_Y            16
106 #define FX_W            252
107 #define FX_H            130
108 
109 
110 #define MP_X            55//32
111 #define MP_Y            60
112 #define MP_W            252
113 #define MP_H            35
114 
115 
116 #define X1_X            55
117 #define X1_Y            25
118 #define X1_W            252
119 
120 #define X2_X            55
121 #define X2_Y            65
122 #define X2_W            252
123 #define X2_H            35
124 
125 #define X3_X            55
126 #define X3_Y            65
127 #define X3_W            252
128 #define X3_H            35
129 
130 #define LEVSEL_X            32
131 #define LEVSEL_Y            22
132 #define LEVSEL_W            252
133 #define LEVSEL_H            118
134 #define MAXCUSTOM       12
135 
136 #define STARTITEM       newgame
137 
138 //
139 // General defines
140 //
141 #define CP_SemiActive      4
142 #define CP_Highlight       5
143 
144 #define OUTOFRANGE         100
145 #define ESCPRESSED         -1
146 #define PAGEUP             -2
147 #define PAGEDOWN           -3
148 #define NOTAVAILABLECOLOR  7
149 #define NEXTPAGECOLOR      16
150 #define NORMALCOLOR        21
151 #define DIMMEDCOLOR        24
152 #define ACTIVECOLOR        241
153 #define HIGHLIGHTCOLOR     1
154 
155 #define MouseInt 0x33
156 #define GAMESVD      "There's already a game\n" \
157                      "saved at this position.\n"\
158                      "Overwrite?"
159 #define COLOR        235
160 
161 #define CUSTOMX      76
162 
163 #define NUMSAVEGAMES 14
164 
165 #define PWORDX 58
166 #define PWORDY 46
167 //#define PBOXX  68
168 #define PBOXX  ( ( 288 - PBOXW ) / 2 )
169 #define PBOXY  71
170 #define PBOXW  115
171 #define PSTRW  110
172 #define PBOXH  12
173 
174 
175 #define QUICKSAVEBACKUP ("rottgamf.rot")
176 //******************************************************************************
177 //
178 // ENUMS
179 //
180 //******************************************************************************
181 
182 typedef struct
183 {
184    int allowed[4];
185 } CustomCtrls;
186 
187 // FOR INPUT TYPES
188 enum {MOUSE, JOYSTICK, KEYBOARDBTNS, KEYBOARDMOVE, SPECIAL1, SPECIAL2};
189 
190 
191 //******************************************************************************
192 //
193 // GLOBALS
194 //
195 //******************************************************************************
196 
197 static byte *ScanNames[] =    // Scan code names with single chars
198 {
199    "?","?","1","2","3","4","5","6","7","8","9","0","-","+","?","?",
200    "Q","W","E","R","T","Y","U","I","O","P","[","]","|","?","A","S",
201    "D","F","G","H","J","K","L",";","\"","?","?","?","Z","X","C","V",
202    "B","N","M",",",".","/","?","?","?","?","?","?","?","?","?","?",
203    "?","?","?","?","?","?","?","?","\xf","?","-","\x15","5","\x11","+","?",
204    "\x13","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?",
205    "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?",
206    "?","?","?","?","?","?","?","?","?","?","?","?","?","?","?","?"
207 };
208 
209 
210 static byte ExtScanCodes[] = // Scan codes with >1 char names
211 {
212    1,    0xe,  0xf,  0x1d, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e,
213    0x3f, 0x40, 0x41, 0x42, 0x43, 0x44, 0x57, 0x58, 0x46, 0x1c, 0x36,
214    0x37, 0x38, 0x47, 0x49, 0x4f, 0x51, 0x52, 0x53, 0x45, 0x48,
215    0x50, 0x4b, 0x4d, 0x00
216 };
217 
218 static byte *ExtScanNames[] = // Names corresponding to ExtScanCodes
219 {
220    "Esc","BkSp","Tab","Ctrl","Space","CapLk","F1","F2","F3","F4",
221    "F5","F6","F7","F8","F9","F10","F11","F12","SclLk","Enter","Shift",
222    "PrtSc","Alt","Home","PgUp","End","PgDn","Ins","Del","NumLk","Up",
223    "Down","Left","Right",""
224 };
225 
226 
227 //******************************************************************************
228 //
229 // PROTOTYPES
230 //
231 //******************************************************************************
232 
233 void MouseSensitivity (void);
234 void DoThreshold (void);
235 byte * IN_GetScanName (ScanCode scan);
236 void DisplayInfo (int which);
237 
238 void PrintLSEntry (int w);
239 
240 void DrawHalfStep (int x, int y);
241 
242 void DrawCtlScreen (void);
243 void DrawCtlButtons (void);
244 void DrawSoundMenu (void);
245 void DrawCustomScreen (void);
246 void DrawLoadSaveScreen (int loadsave);
247 void DrawLoadSaveScreenAlt (int loadsave);
248 void DrawMusicMenu (void);
249 void DrawNewGame (void);
250 void DrawNewGameDiff (int w);
251 void DrawNewPlayerDiff (int w);
252 void DrawFXMenu (void);
253 void DrawFXButtons (void);
254 void DrawCustomJoystick (void);
255 void DrawCustomMouse (void);
256 void DrawCustomSpecial (void);
257 void DrawCustomMenu (void);
258 void DrawPlayerMenu (void);
259 
260 void DoMainMenu (void);
261 
262 boolean CP_DisplayMsg (char *s, int number);
263 void CP_EndGame (void);
264 int CP_SaveGame (void);
265 void CP_Control (void);
266 void CP_Sound (void);
267 void CP_ChangeView (void);
268 void CP_DoubleClickSpeed( void );
269 void CP_ErrorMsg( char *title, char *error, int font );
270 void CP_Quit (int which);
271 void CP_NewGame (void);
272 void CP_Music (void);
273 void CP_FX (void);
274 void CP_MCports (void);
275 void CP_FXMenu (void);
276 void CP_Custom (void);
277 void CP_Keyboard (void);
278 void CP_Mouse (void);
279 void CP_Joystick (void);
280 void CP_Special (void);
281 void CP_OrderInfo( void );
282 
283 void DefineMouseBtns1 (void);
284 void DefineMouseBtns2 (void);
285 void DefineKeyBtns1 (void);
286 void DefineKeyBtns2 (void);
287 void DefineKeyMove1 (void);
288 void DefineKeyMove2 (void);
289 void DefineJoyBtns1 (void);
290 void DefineJoyBtns2 (void);
291 void DefineSpecialBtns1 (void);
292 void DefineSpecialBtns2 (void);
293 
294 void DrawSTMenuBuf (int x, int y, int w, int h, boolean up);
295 
296 void MusicVolume (void);
297 void FXVolume (void);
298 
299 void DefineKey( void );
300 void DefineJoyBtn( void );
301 void DefineMouseBtn( void );
302 
303 void DrawControlMenu (void);
304 void CP_ControlMenu (void);
305 void DrawOptionsMenu (void);
306 void CP_OptionsMenu (void);
307 void DrawOptionsButtons (void);
308 void MenuFlipSpeed (void);
309 void DrawDetailMenu (void);
310 void CP_DetailMenu (void);
311 void DrawBattleMenu (void);
312 void CP_BattleMenu (void);
313 void MCERROR (void);
314 
315 void DrawKeyboardMenu (void);
316 void CP_KeyboardMenu (void);
317 boolean SliderMenu( int *number, int upperbound, int lowerbound, int erasex,
318    int erasey, int erasew, int numadjust, char *blockname,
319    void (*routine) (int w), char *title, char *left, char *right );
320 
321 void DrawF1Help (void);
322 void CP_F1Help (void);
323 void CP_ScreenSize( void );
324 
325 void CP_ViolenceMenu (void);
326 void DrawViolenceLevelMenu (void);
327 void DrawViolenceLevelPWord (void);
328 
329 void DrawViolenceLevel (void);
330 void CP_ViolenceLevel (void);
331 
332 void DrawPWMenu (void);
333 void CP_PWMenu (void);
334 
335 void DrawBattleModes (void);
336 void CP_BattleModes (void);
337 
338 void DrawBattleOptions (void);
339 void CP_BattleOptions (void);
340 
341 void DrawGravityMenu (void);
342 void CP_GravityOptions (void);
343 void DrawSpeedMenu (void);
344 void CP_SpeedOptions (void);
345 void DrawAmmoPerWeaponMenu (void);
346 void CP_AmmoPerWeaponOptions (void);
347 void DrawHitPointsMenu (void);
348 void CP_HitPointsOptions (void);
349 void DrawSpawnControlMenu (void);
350 void DrawSpawnControlButtons (void);
351 void CP_SpawnControlOptions (void);
352 void DrawLightLevelMenu (void);
353 void CP_LightLevelOptions (void);
354 void DrawPointGoalMenu (void);
355 void CP_PointGoalOptions (void);
356 void DrawDangerMenu (void);
357 void CP_DangerOptions (void);
358 void DrawTimeLimitMenu (void);
359 void CP_TimeLimitOptions (void);
360 void PrintBattleOption( boolean inmenu, int x, int y, char *text );
361 
362 void CP_OnePlayerWarningMessage( void );
363 
364 void DrawMultiPageCustomMenu( char *title, void ( *redrawfunc )( void ) );
365 
366 #endif
367