00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025 #ifndef BUFFERED_INPUT_H_
00026 #define BUFFERED_INPUT_H_
00027
00028 #include <Core/Thread/Thread.h>
00029 #include <Core/Utility/FPSController.h>
00030 #include <Core/Container/Deque.h>
00031 #include <Core/Container/ArrayList.h>
00032 #include <Input/Keyboard/KeyboardState.h>
00033 #include <Input/Mouse/MouseState.h>
00034 #include <Input/Joystick/JoystickState.h>
00035
00036 namespace Lamp{
00037
00038 class Keyboard;
00039 class KeyboardDevice;
00040 class Mouse;
00041 class MouseDevice;
00042 class Joystick;
00043 class JoystickDevice;
00044 class BinaryWriter;
00045 class BinaryReader;
00046
00047
00048
00049
00050
00051 class BufferedInput : public Thread{
00052 friend class LampInput;
00053 public:
00054
00055 static const float interval60FPS;
00056
00057 static const float interval30FPS;
00058
00059
00060
00061
00062
00063
00064 virtual void setTargetInterval(float targetInterval);
00065
00066
00067
00068
00069
00070 virtual float getTargetInterval();
00071
00072
00073
00074
00075
00076
00077
00078
00079 virtual void run(Thread* thread);
00080
00081 private:
00082
00083
00084
00085
00086 BufferedInput();
00087
00088
00089
00090
00091 virtual ~BufferedInput();
00092
00093
00094
00095
00096
00097
00098
00099 virtual void setKeyboard(
00100 Keyboard* keyboard, KeyboardDevice* keyboardDevice){
00101 keyboard_ = keyboard;
00102 keyboardDevice_ = keyboardDevice;
00103 Assert((keyboard_ != NULL) && (keyboardDevice_ != NULL));
00104 }
00105
00106
00107
00108
00109
00110
00111 virtual void setMouse(Mouse* mouse, MouseDevice* mouseDevice){
00112 mouse_ = mouse;
00113 mouseDevice_ = mouseDevice;
00114 Assert((mouse_ != NULL) && (mouseDevice_ != NULL));
00115 }
00116
00117
00118
00119
00120
00121
00122 virtual void addJoystick(
00123 Joystick* joystick, JoystickDevice* joystickDevice){
00124 Assert((joystick != NULL) && (joystickDevice != NULL));
00125 joysticks_.add(joystick);
00126 joystickDevices_.add(joystickDevice);
00127 }
00128
00129
00130
00131
00132
00133
00134 virtual bool hasMoreInput();
00135
00136
00137
00138
00139 virtual void nextInput();
00140
00141
00142
00143
00144
00145 virtual int getInputCount();
00146
00147
00148
00149
00150
00151
00152
00153
00154 virtual void startLogging(BinaryWriter* binaryWriter);
00155
00156
00157
00158
00159 virtual void endLogging();
00160
00161
00162
00163
00164
00165
00166
00167
00168 virtual void playLog(BinaryReader* binaryReader);
00169
00170
00171
00172
00173 virtual void stopLog();
00174
00175
00176
00177 virtual void devicePolling();
00178
00179
00180 virtual void deviceUpdate();
00181
00182
00183 virtual void logUpdate();
00184
00185
00186 virtual void writeLog();
00187
00188
00189
00190 BufferedInput(const BufferedInput& copy);
00191
00192
00193 void operator =(const BufferedInput& copy);
00194
00195
00196 FPSController fpsController_;
00197
00198 BinaryWriter* logWriter_;
00199
00200 BinaryReader* logReader_;
00201
00202
00203 Keyboard* keyboard_;
00204
00205 KeyboardDevice* keyboardDevice_;
00206
00207 Deque<KeyboardState> keyboardStates_;
00208
00209
00210 Mouse* mouse_;
00211
00212 MouseDevice* mouseDevice_;
00213
00214 Deque<MouseState> mouseStates_;
00215
00216
00217 ArrayList<Joystick*> joysticks_;
00218
00219 ArrayList<JoystickDevice*> joystickDevices_;
00220
00221 Deque<JoystickState> joystickStates_;
00222
00223 };
00224
00225
00226 }
00227 #endif // End of BUFFERED_INPUT_H_
00228