00001 /***************************************************************************** 00002 * $Id: userinput.h,v 1.1 2003/07/16 11:42:15 schou Exp $ 00003 * Author: Jakob Schou Jensen <schou@sourceforge.net> 00004 * Licence: GPL 00005 * 00006 * Description: User input handling 00007 * 00008 ****************************************************************************/ 00009 00015 #ifndef USERINPUT_H 00016 #define USERINPUT_H 00017 00018 #include <SDL/SDL.h> 00019 #include <adsoio.h> 00020 00021 #define UI_MAX_HANDLERS 16 00022 00023 void processEvents(); 00024 00027 struct KeyboardHandler { 00030 virtual bool onKeyEvent(SDLKey key) = 0; 00031 virtual ~KeyboardHandler(){} 00032 }; 00033 00035 class UserInput { 00036 KeyboardHandler *handlerList[UI_MAX_HANDLERS]; 00037 int handlerCount; 00038 00039 void openMenuPage(int p); 00040 void handleKeyDown(SDL_keysym *keysym); 00041 void handleKeyUp(SDL_keysym *keysym); 00042 void handleMouseMotion(SDL_MouseMotionEvent *mme); 00043 void handleMouseButton(SDL_MouseButtonEvent *mbe); 00044 00045 public: 00046 // Keyboard movement 00047 int key_left; 00048 int key_right; 00049 int key_forward; 00050 int key_back; 00051 int key_shoot; 00052 00053 // Mouse input 00054 int mouse_delta_x; 00055 int mouse_delta_y; 00056 int mouse_left; 00057 int mouse_right; 00058 00059 void processEvents(); 00060 00063 void addHandler(KeyboardHandler *h){ 00064 if(handlerCount<UI_MAX_HANDLERS) handlerList[handlerCount++] = h; 00065 else iFatal("Maximum keyboard handlers exceeded"); 00066 } 00067 UserInput(){ 00068 key_left=0; 00069 key_right=0; 00070 key_forward=0; 00071 key_back=0; 00072 key_shoot=0; 00073 mouse_delta_x = 0; 00074 mouse_delta_y = 0; 00075 mouse_left = 0; 00076 mouse_right = 0; 00077 00078 handlerCount = 0; 00079 } 00080 }; 00081 00082 extern UserInput userInput; 00083 00084 #endif 00085
1.3.2