2 Copyright (C) 2003, 2010 - Wolfire Games
4 This file is part of Lugaru.
6 Lugaru is free software; you can redistribute it and/or
7 modify it under the terms of the GNU General Public License
8 as published by the Free Software Foundation; either version 2
9 of the License, or (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
15 See the GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License
18 along with this program; if not, write to the Free Software
19 Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
22 /**> HEADER FILES <**/
26 extern bool keyboardfrozen;
28 /********************> IsKeyDown() <*****/
29 Boolean IsKeyDown( unsigned char *keyMap, unsigned short theKey )
31 if(keyboardfrozen)return 0;
33 static long keyMapIndex;
34 static Boolean isKeyDown;
35 static short bitToCheck;
37 // Calculate the key map index
38 keyMapIndex = keyMap[theKey/8];
40 // Calculate the individual bit to check
41 bitToCheck = theKey%8;
43 // Check the status of the key
44 isKeyDown = ( keyMapIndex >> bitToCheck ) & 0x01;
46 // Return the status of the key
51 unsigned short CharToKey(const char* which)
53 if(!strcmp(which,"a")){
56 if(!strcmp(which,"b")){
59 if(!strcmp(which,"c")){
62 if(!strcmp(which,"d")){
65 if(!strcmp(which,"e")){
68 if(!strcmp(which,"f")){
71 if(!strcmp(which,"g")){
74 if(!strcmp(which,"h")){
77 if(!strcmp(which,"i")){
80 if(!strcmp(which,"j")){
83 if(!strcmp(which,"k")){
86 if(!strcmp(which,"l")){
89 if(!strcmp(which,"m")){
92 if(!strcmp(which,"n")){
95 if(!strcmp(which,"o")){
98 if(!strcmp(which,"p")){
101 if(!strcmp(which,"q")){
104 if(!strcmp(which,"r")){
107 if(!strcmp(which,"s")){
110 if(!strcmp(which,"t")){
113 if(!strcmp(which,"u")){
116 if(!strcmp(which,"v")){
119 if(!strcmp(which,"w")){
122 if(!strcmp(which,"x")){
125 if(!strcmp(which,"y")){
128 if(!strcmp(which,"z")){
131 if(!strcmp(which,"0")){
132 return MAC_NUMPAD_0_KEY;
134 if(!strcmp(which,"1")){
135 return MAC_NUMPAD_1_KEY;
137 if(!strcmp(which,"2")){
138 return MAC_NUMPAD_2_KEY;
140 if(!strcmp(which,"3")){
141 return MAC_NUMPAD_3_KEY;
143 if(!strcmp(which,"4")){
144 return MAC_NUMPAD_4_KEY;
146 if(!strcmp(which,"5")){
147 return MAC_NUMPAD_5_KEY;
149 if(!strcmp(which,"6")){
150 return MAC_NUMPAD_6_KEY;
152 if(!strcmp(which,"7")){
153 return MAC_NUMPAD_7_KEY;
155 if(!strcmp(which,"8")){
156 return MAC_NUMPAD_8_KEY;
158 if(!strcmp(which,"9")){
159 return MAC_NUMPAD_9_KEY;
161 if(!strcmp(which,"enter")){
162 return MAC_ENTER_KEY;
164 if(!strcmp(which,"control")){
165 return MAC_CONTROL_KEY;
167 if(!strcmp(which,"return")){
168 return MAC_RETURN_KEY;
170 if(!strcmp(which,"space")){
171 return MAC_SPACE_KEY;
173 if(!strcmp(which,"shift")){
174 return MAC_SHIFT_KEY;
176 if(!strcmp(which,"uparrow")){
177 return MAC_ARROW_UP_KEY;
179 if(!strcmp(which,"downarrow")){
180 return MAC_ARROW_DOWN_KEY;
182 if(!strcmp(which,"leftarrow")){
183 return MAC_ARROW_LEFT_KEY;
185 if(!strcmp(which,"rightarrow")){
186 return MAC_ARROW_RIGHT_KEY;
190 const char* KeyToChar(unsigned short which)
194 if(which==MAC_A_KEY){
197 if(which==MAC_B_KEY){
200 if(which==MAC_C_KEY){
203 if(which==MAC_D_KEY){
206 if(which==MAC_E_KEY){
209 if(which==MAC_F_KEY){
212 if(which==MAC_G_KEY){
215 if(which==MAC_H_KEY){
218 if(which==MAC_I_KEY){
221 if(which==MAC_J_KEY){
224 if(which==MAC_K_KEY){
227 if(which==MAC_L_KEY){
230 if(which==MAC_M_KEY){
233 if(which==MAC_N_KEY){
236 if(which==MAC_O_KEY){
239 if(which==MAC_P_KEY){
242 if(which==MAC_Q_KEY){
245 if(which==MAC_R_KEY){
248 if(which==MAC_S_KEY){
251 if(which==MAC_T_KEY){
254 if(which==MAC_U_KEY){
257 if(which==MAC_V_KEY){
260 if(which==MAC_W_KEY){
263 if(which==MAC_X_KEY){
266 if(which==MAC_Y_KEY){
269 if(which==MAC_Z_KEY){
272 if(which==MAC_NUMPAD_1_KEY){
275 if(which==MAC_NUMPAD_2_KEY){
278 if(which==MAC_NUMPAD_3_KEY){
281 if(which==MAC_NUMPAD_4_KEY){
284 if(which==MAC_NUMPAD_5_KEY){
287 if(which==MAC_NUMPAD_6_KEY){
290 if(which==MAC_NUMPAD_7_KEY){
293 if(which==MAC_NUMPAD_8_KEY){
296 if(which==MAC_NUMPAD_9_KEY){
299 if(which==MAC_ENTER_KEY){
302 if(which==MAC_NUMPAD_0_KEY){
305 if(which==MAC_1_KEY){
308 if(which==MAC_2_KEY){
311 if(which==MAC_3_KEY){
314 if(which==MAC_4_KEY){
317 if(which==MAC_5_KEY){
320 if(which==MAC_6_KEY){
323 if(which==MAC_7_KEY){
326 if(which==MAC_8_KEY){
329 if(which==MAC_9_KEY){
332 if(which==MAC_0_KEY){
335 if(which==MAC_F1_KEY){
338 if(which==MAC_F2_KEY){
341 if(which==MAC_F3_KEY){
344 if(which==MAC_F4_KEY){
347 if(which==MAC_F5_KEY){
350 if(which==MAC_F6_KEY){
353 if(which==MAC_F7_KEY){
356 if(which==MAC_F8_KEY){
359 if(which==MAC_F9_KEY){
362 if(which==MAC_F10_KEY){
365 if(which==MAC_F11_KEY){
368 if(which==MAC_F12_KEY){
371 if(which==MAC_ESCAPE_KEY){
374 if(which==MAC_DELETE_KEY){
377 if(which==MAC_TAB_KEY){
380 if(which==MAC_TILDE_KEY){
383 if(which==MAC_CAPS_LOCK_KEY){
386 if(which==MAC_COMMAND_KEY){
389 if(which==MAC_OPTION_KEY){
392 if(which==MAC_DEL_KEY){
395 if(which==MAC_INSERT_KEY){
398 if(which==MAC_HOME_KEY){
401 if(which==MAC_END_KEY){
404 if(which==MAC_PAGE_UP_KEY){
407 if(which==MAC_PAGE_DOWN_KEY){
410 if(which==MAC_NUMPAD_CLEAR_KEY){
413 if(which==MAC_CONTROL_KEY){
416 if(which==MAC_SPACE_KEY){
419 if(which==MAC_RETURN_KEY){
422 if(which==MAC_SHIFT_KEY){
425 if(which==MAC_ARROW_UP_KEY){
428 if(which==MAC_ARROW_DOWN_KEY){
431 if(which==MAC_ARROW_LEFT_KEY){
434 if(which==MAC_ARROW_RIGHT_KEY){
437 if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
440 if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
443 if(which==MAC_NUMPAD_PLUS_KEY){
446 if(which==MAC_NUMPAD_ASTERISK_KEY){
449 if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
452 if(which==MAC_BACKSLASH_KEY){
455 if(which==MAC_LEFTBRACKET_KEY){
458 if(which==MAC_RIGHTBRACKET_KEY){
461 if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
464 if(which==MAC_COMMA_KEY){
467 if(which==MAC_APOSTROPHE_KEY){
470 if(which==MAC_SEMICOLON_KEY){
476 char KeyToSingleChar(unsigned short which)
480 if(which==MAC_A_KEY){
483 if(which==MAC_B_KEY){
486 if(which==MAC_C_KEY){
489 if(which==MAC_D_KEY){
492 if(which==MAC_E_KEY){
495 if(which==MAC_F_KEY){
498 if(which==MAC_G_KEY){
501 if(which==MAC_H_KEY){
504 if(which==MAC_I_KEY){
507 if(which==MAC_J_KEY){
510 if(which==MAC_K_KEY){
513 if(which==MAC_L_KEY){
516 if(which==MAC_M_KEY){
519 if(which==MAC_N_KEY){
522 if(which==MAC_O_KEY){
525 if(which==MAC_P_KEY){
528 if(which==MAC_Q_KEY){
531 if(which==MAC_R_KEY){
534 if(which==MAC_S_KEY){
537 if(which==MAC_T_KEY){
540 if(which==MAC_U_KEY){
543 if(which==MAC_V_KEY){
546 if(which==MAC_W_KEY){
549 if(which==MAC_X_KEY){
552 if(which==MAC_Y_KEY){
555 if(which==MAC_Z_KEY){
558 if(which==MAC_NUMPAD_1_KEY){
561 if(which==MAC_NUMPAD_2_KEY){
564 if(which==MAC_NUMPAD_3_KEY){
567 if(which==MAC_NUMPAD_4_KEY){
570 if(which==MAC_NUMPAD_5_KEY){
573 if(which==MAC_NUMPAD_6_KEY){
576 if(which==MAC_NUMPAD_7_KEY){
579 if(which==MAC_NUMPAD_8_KEY){
582 if(which==MAC_NUMPAD_9_KEY){
585 if(which==MAC_NUMPAD_0_KEY){
588 if(which==MAC_1_KEY){
591 if(which==MAC_2_KEY){
594 if(which==MAC_3_KEY){
597 if(which==MAC_4_KEY){
600 if(which==MAC_5_KEY){
603 if(which==MAC_6_KEY){
606 if(which==MAC_7_KEY){
609 if(which==MAC_8_KEY){
612 if(which==MAC_9_KEY){
615 if(which==MAC_0_KEY){
618 if(which==MAC_SPACE_KEY){
621 if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
624 if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
627 if(which==MAC_NUMPAD_PLUS_KEY){
630 if(which==MAC_NUMPAD_ASTERISK_KEY){
633 if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
636 if(which==MAC_BACKSLASH_KEY){
639 if(which==MAC_LEFTBRACKET_KEY){
642 if(which==MAC_RIGHTBRACKET_KEY){
645 if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
648 if(which==MAC_COMMA_KEY){
651 if(which==MAC_APOSTROPHE_KEY){
654 if(which==MAC_SEMICOLON_KEY){
660 char Shift(char which)
817 bool Compare(const char *thestring, const char *tocompare, int start, int end)
820 for(i=start;i<=end;i++){
821 if(thestring[i]!=tocompare[i-start]&&thestring[i]!=tocompare[i-start]+'A'-'a')return 0;