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 <**/
33 extern bool keyboardfrozen;
34 extern bool buttons[3];
35 /********************> IsKeyDown() <*****/
36 Boolean IsKeyDown( unsigned char *keyMap, unsigned short theKey )
38 if(keyboardfrozen)return 0;
39 if(theKey< 0x80 /*1000*/){
40 static long keyMapIndex;
41 static Boolean isKeyDown;
42 static short bitToCheck;
44 // Calculate the key map index
45 keyMapIndex = keyMap[theKey/8];
47 // Calculate the individual bit to check
48 bitToCheck = theKey%8;
50 // Check the status of the key
51 isKeyDown = ( keyMapIndex >> bitToCheck ) & 0x01;
53 // Return the status of the key
56 else if(theKey==MAC_MOUSEBUTTON1)
58 else if(theKey==MAC_MOUSEBUTTON2)
64 unsigned short CharToKey(const char* which)
67 if(!strcasecmp(which,"a")){
70 if(!strcasecmp(which,"b")){
73 if(!strcasecmp(which,"c")){
76 if(!strcasecmp(which,"d")){
79 if(!strcasecmp(which,"e")){
82 if(!strcasecmp(which,"f")){
85 if(!strcasecmp(which,"g")){
88 if(!strcasecmp(which,"h")){
91 if(!strcasecmp(which,"i")){
94 if(!strcasecmp(which,"j")){
97 if(!strcasecmp(which,"k")){
100 if(!strcasecmp(which,"l")){
103 if(!strcasecmp(which,"m")){
106 if(!strcasecmp(which,"n")){
109 if(!strcasecmp(which,"o")){
112 if(!strcasecmp(which,"p")){
115 if(!strcasecmp(which,"q")){
118 if(!strcasecmp(which,"r")){
121 if(!strcasecmp(which,"s")){
124 if(!strcasecmp(which,"t")){
127 if(!strcasecmp(which,"u")){
130 if(!strcasecmp(which,"v")){
133 if(!strcasecmp(which,"w")){
136 if(!strcasecmp(which,"x")){
139 if(!strcasecmp(which,"y")){
142 if(!strcasecmp(which,"z")){
147 if(!strcasecmp(which,"KP0")){
148 return MAC_NUMPAD_0_KEY;
150 if(!strcasecmp(which,"KP1")){
151 return MAC_NUMPAD_1_KEY;
153 if(!strcasecmp(which,"KP2")){
154 return MAC_NUMPAD_2_KEY;
156 if(!strcasecmp(which,"KP3")){
157 return MAC_NUMPAD_3_KEY;
159 if(!strcasecmp(which,"KP4")){
160 return MAC_NUMPAD_4_KEY;
162 if(!strcasecmp(which,"KP5")){
163 return MAC_NUMPAD_5_KEY;
165 if(!strcasecmp(which,"KP6")){
166 return MAC_NUMPAD_6_KEY;
168 if(!strcasecmp(which,"KP7")){
169 return MAC_NUMPAD_7_KEY;
171 if(!strcasecmp(which,"KP8")){
172 return MAC_NUMPAD_8_KEY;
174 if(!strcasecmp(which,"KP9")){
175 return MAC_NUMPAD_9_KEY;
179 if(!strcasecmp(which,"enter")){
180 return MAC_ENTER_KEY;
184 if(!strcasecmp(which,"0")){
187 if(!strcasecmp(which,"1")){
190 if(!strcasecmp(which,"2")){
193 if(!strcasecmp(which,"3")){
196 if(!strcasecmp(which,"4")){
199 if(!strcasecmp(which,"5")){
202 if(!strcasecmp(which,"6")){
205 if(!strcasecmp(which,"7")){
208 if(!strcasecmp(which,"8")){
211 if(!strcasecmp(which,"9")){
216 if(!strcasecmp(which,"F1")){
219 if(!strcasecmp(which,"F2")){
222 if(!strcasecmp(which,"F3")){
225 if(!strcasecmp(which,"F4")){
228 if(!strcasecmp(which,"F5")){
231 if(!strcasecmp(which,"F6")){
234 if(!strcasecmp(which,"F7")){
237 if(!strcasecmp(which,"F8")){
240 if(!strcasecmp(which,"F9")){
243 if(!strcasecmp(which,"F10")){
246 if(!strcasecmp(which,"F11")){
249 if(!strcasecmp(which,"F12")){
254 if(!strcasecmp(which,"escape")){
255 return MAC_ESCAPE_KEY;
257 if(!strcasecmp(which,"backspace")){
258 return MAC_DELETE_KEY;
260 if(!strcasecmp(which,"tab")){
263 if(!strcasecmp(which,"`")){
264 return MAC_TILDE_KEY;
266 if(!strcasecmp(which,"caps_lock")){
267 return MAC_CAPS_LOCK_KEY;
272 if(!strcasecmp(which,"command")){
273 return MAC_COMMAND_KEY;
275 if(!strcasecmp(which,"option")){
276 return MAC_OPTION_KEY;
278 if(!strcasecmp(which,"delete")){
281 if(!strcasecmp(which,"insert")){
282 return MAC_INSERT_KEY;
284 if(!strcasecmp(which,"home")){
287 if(!strcasecmp(which,"end")){
290 if(!strcasecmp(which,"page_up")){
291 return MAC_PAGE_UP_KEY;
293 if(!strcasecmp(which,"page_down")){
294 return MAC_PAGE_DOWN_KEY;
296 if(!strcasecmp(which,"clear")){
297 return MAC_NUMPAD_CLEAR_KEY;
300 if(!strcasecmp(which,"control")){
301 return MAC_CONTROL_KEY;
303 if(!strcasecmp(which,"return")){
304 return MAC_RETURN_KEY;
306 if(!strcasecmp(which,"space")){
307 return MAC_SPACE_KEY;
309 if(!strcasecmp(which,"shift")){
310 return MAC_SHIFT_KEY;
312 if(!strcasecmp(which,"uparrow")){
313 return MAC_ARROW_UP_KEY;
315 if(!strcasecmp(which,"downarrow")){
316 return MAC_ARROW_DOWN_KEY;
318 if(!strcasecmp(which,"leftarrow")){
319 return MAC_ARROW_LEFT_KEY;
321 if(!strcasecmp(which,"rightarrow")){
322 return MAC_ARROW_RIGHT_KEY;
324 if(!strcasecmp(which,"mouse1")){
325 return MAC_MOUSEBUTTON1;
327 if(!strcasecmp(which,"mouse2")){
328 return MAC_MOUSEBUTTON2;
330 if(!strcasecmp(which,"+")){
331 return MAC_NUMPAD_PLUS_KEY;
333 if(!strcasecmp(which,"*")){
334 return MAC_NUMPAD_ASTERISK_KEY;
336 if(!strcasecmp(which,"/")){
337 return MAC_SLASH_KEY;
339 if(!strcasecmp(which,"\\")){
340 return MAC_BACKSLASH_KEY;
342 if(!strcasecmp(which,"[")){
343 return MAC_LEFTBRACKET_KEY;
345 if(!strcasecmp(which,"]")){
346 return MAC_RIGHTBRACKET_KEY;
348 if(!strcasecmp(which,".")){
349 return MAC_PERIOD_KEY;
351 if(!strcasecmp(which,",")){
352 return MAC_COMMA_KEY;
354 if(!strcasecmp(which,"\"")){
355 return MAC_APOSTROPHE_KEY;
357 if(!strcasecmp(which,";")){
358 return MAC_SEMICOLON_KEY;
363 const char* KeyToChar(unsigned short which)
368 if(which==MAC_A_KEY){
371 if(which==MAC_B_KEY){
374 if(which==MAC_C_KEY){
377 if(which==MAC_D_KEY){
380 if(which==MAC_E_KEY){
383 if(which==MAC_F_KEY){
386 if(which==MAC_G_KEY){
389 if(which==MAC_H_KEY){
392 if(which==MAC_I_KEY){
395 if(which==MAC_J_KEY){
398 if(which==MAC_K_KEY){
401 if(which==MAC_L_KEY){
404 if(which==MAC_M_KEY){
407 if(which==MAC_N_KEY){
410 if(which==MAC_O_KEY){
413 if(which==MAC_P_KEY){
416 if(which==MAC_Q_KEY){
419 if(which==MAC_R_KEY){
422 if(which==MAC_S_KEY){
425 if(which==MAC_T_KEY){
428 if(which==MAC_U_KEY){
431 if(which==MAC_V_KEY){
434 if(which==MAC_W_KEY){
437 if(which==MAC_X_KEY){
440 if(which==MAC_Y_KEY){
443 if(which==MAC_Z_KEY){
448 if(which==MAC_NUMPAD_1_KEY){
451 if(which==MAC_NUMPAD_2_KEY){
454 if(which==MAC_NUMPAD_3_KEY){
457 if(which==MAC_NUMPAD_4_KEY){
460 if(which==MAC_NUMPAD_5_KEY){
463 if(which==MAC_NUMPAD_6_KEY){
466 if(which==MAC_NUMPAD_7_KEY){
469 if(which==MAC_NUMPAD_8_KEY){
472 if(which==MAC_NUMPAD_9_KEY){
475 if(which==MAC_NUMPAD_0_KEY){
480 if(which==MAC_ENTER_KEY){
485 if(which==MAC_1_KEY){
488 if(which==MAC_2_KEY){
491 if(which==MAC_3_KEY){
494 if(which==MAC_4_KEY){
497 if(which==MAC_5_KEY){
500 if(which==MAC_6_KEY){
503 if(which==MAC_7_KEY){
506 if(which==MAC_8_KEY){
509 if(which==MAC_9_KEY){
512 if(which==MAC_0_KEY){
517 if(which==MAC_F1_KEY){
520 if(which==MAC_F2_KEY){
523 if(which==MAC_F3_KEY){
526 if(which==MAC_F4_KEY){
529 if(which==MAC_F5_KEY){
532 if(which==MAC_F6_KEY){
535 if(which==MAC_F7_KEY){
538 if(which==MAC_F8_KEY){
541 if(which==MAC_F9_KEY){
544 if(which==MAC_F10_KEY){
547 if(which==MAC_F11_KEY){
550 if(which==MAC_F12_KEY){
555 if(which==MAC_ESCAPE_KEY){
558 if(which==MAC_DELETE_KEY){
561 if(which==MAC_TAB_KEY){
564 if(which==MAC_TILDE_KEY){
567 if(which==MAC_CAPS_LOCK_KEY){
570 if(which==MAC_COMMAND_KEY){
573 if(which==MAC_OPTION_KEY){
576 if(which==MAC_DEL_KEY){
579 if(which==MAC_INSERT_KEY){
582 if(which==MAC_HOME_KEY){
585 if(which==MAC_END_KEY){
588 if(which==MAC_PAGE_UP_KEY){
591 if(which==MAC_PAGE_DOWN_KEY){
594 if(which==MAC_NUMPAD_CLEAR_KEY){
597 if(which==MAC_CONTROL_KEY){
600 if(which==MAC_SPACE_KEY){
603 if(which==MAC_RETURN_KEY){
606 if(which==MAC_SHIFT_KEY){
609 if(which==MAC_ARROW_UP_KEY){
612 if(which==MAC_ARROW_DOWN_KEY){
615 if(which==MAC_ARROW_LEFT_KEY){
618 if(which==MAC_ARROW_RIGHT_KEY){
621 if(which==MAC_MOUSEBUTTON1){
624 if(which==MAC_MOUSEBUTTON2){
627 if(which==MAC_ARROW_RIGHT_KEY){
630 if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
633 if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
636 if(which==MAC_NUMPAD_PLUS_KEY){
639 if(which==MAC_NUMPAD_ASTERISK_KEY){
642 if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
645 if(which==MAC_BACKSLASH_KEY){
648 if(which==MAC_LEFTBRACKET_KEY){
651 if(which==MAC_RIGHTBRACKET_KEY){
654 if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
657 if(which==MAC_COMMA_KEY){
660 if(which==MAC_APOSTROPHE_KEY){
663 if(which==MAC_SEMICOLON_KEY){
669 char KeyToSingleChar(unsigned short which)
673 if(which==MAC_A_KEY){
676 if(which==MAC_B_KEY){
679 if(which==MAC_C_KEY){
682 if(which==MAC_D_KEY){
685 if(which==MAC_E_KEY){
688 if(which==MAC_F_KEY){
691 if(which==MAC_G_KEY){
694 if(which==MAC_H_KEY){
697 if(which==MAC_I_KEY){
700 if(which==MAC_J_KEY){
703 if(which==MAC_K_KEY){
706 if(which==MAC_L_KEY){
709 if(which==MAC_M_KEY){
712 if(which==MAC_N_KEY){
715 if(which==MAC_O_KEY){
718 if(which==MAC_P_KEY){
721 if(which==MAC_Q_KEY){
724 if(which==MAC_R_KEY){
727 if(which==MAC_S_KEY){
730 if(which==MAC_T_KEY){
733 if(which==MAC_U_KEY){
736 if(which==MAC_V_KEY){
739 if(which==MAC_W_KEY){
742 if(which==MAC_X_KEY){
745 if(which==MAC_Y_KEY){
748 if(which==MAC_Z_KEY){
751 if(which==MAC_NUMPAD_1_KEY){
754 if(which==MAC_NUMPAD_2_KEY){
757 if(which==MAC_NUMPAD_3_KEY){
760 if(which==MAC_NUMPAD_4_KEY){
763 if(which==MAC_NUMPAD_5_KEY){
766 if(which==MAC_NUMPAD_6_KEY){
769 if(which==MAC_NUMPAD_7_KEY){
772 if(which==MAC_NUMPAD_8_KEY){
775 if(which==MAC_NUMPAD_9_KEY){
778 if(which==MAC_NUMPAD_0_KEY){
781 if(which==MAC_1_KEY){
784 if(which==MAC_2_KEY){
787 if(which==MAC_3_KEY){
790 if(which==MAC_4_KEY){
793 if(which==MAC_5_KEY){
796 if(which==MAC_6_KEY){
799 if(which==MAC_7_KEY){
802 if(which==MAC_8_KEY){
805 if(which==MAC_9_KEY){
808 if(which==MAC_0_KEY){
811 if(which==MAC_SPACE_KEY){
814 if(which==MAC_MINUS_KEY||which==MAC_NUMPAD_MINUS_KEY){
817 if(which==MAC_PLUS_KEY||which==MAC_NUMPAD_EQUALS_KEY){
820 if(which==MAC_NUMPAD_PLUS_KEY){
823 if(which==MAC_NUMPAD_ASTERISK_KEY){
826 if(which==MAC_SLASH_KEY||which==MAC_NUMPAD_SLASH_KEY){
829 if(which==MAC_BACKSLASH_KEY){
832 if(which==MAC_LEFTBRACKET_KEY){
835 if(which==MAC_RIGHTBRACKET_KEY){
838 if(which==MAC_PERIOD_KEY||which==MAC_NUMPAD_PERIOD_KEY){
841 if(which==MAC_COMMA_KEY){
844 if(which==MAC_APOSTROPHE_KEY){
847 if(which==MAC_SEMICOLON_KEY){
853 char Shift(char which)
1010 bool Compare(const char *thestring, const char *tocompare, int start, int end)
1013 for(i=start;i<=end;i++){
1014 if(thestring[i]!=tocompare[i-start]&&thestring[i]!=tocompare[i-start]+'A'-'a')return 0;