"L. Spiro Engine"
|
00001 00024 #ifndef __LSE_KEYBOARDBUFFER_H__ 00025 #define __LSE_KEYBOARDBUFFER_H__ 00026 00027 #include "../LSEEngine.h" 00028 #include "CriticalSection/LSHCriticalSection.h" 00029 #include "Time/LSSTDTime.h" 00030 #include "Vector/LSTLSVectorPoD.h" 00031 00032 namespace lse { 00033 00034 class CKeyboard; 00035 00050 class CKeyboardBuffer { 00051 friend class CKeyboard; 00052 00053 public : 00054 // == Various constructors. 00055 LSE_CALL CKeyboardBuffer(); 00056 00057 00058 // == Enumerations. 00062 enum LSE_KEY_EVENTS { 00063 LSE_KE_KEYUP, 00064 LSE_KE_KEYDOWN, 00065 }; 00066 00070 enum LSE_TOTALS { 00071 LSE_T_TOTALKEYS = 300, 00072 LSE_T_MAXEVENTS = 250 00073 }; 00074 00075 00076 // == Functions. 00083 LSVOID LSE_CALL OnKeyDown( LSUINT32 _ui32Key ); 00084 00091 LSVOID LSE_CALL OnKeyUp( LSUINT32 _ui32Key ); 00092 00099 LSVOID LSE_CALL UpdateKeyboard( CKeyboard * _pkKeyboard ); 00100 00101 00102 protected : 00103 // == Types. 00107 typedef struct LSE_KEY_EVENT { 00111 LSE_KEY_EVENTS keEvent; 00112 00116 LSUINT64 ui64Time; 00117 } * LPLSE_KEY_EVENT, * const LPCLSE_KEY_EVENT; 00118 00119 00120 // == Members. 00121 // Array of keys. 00122 CSVectorPoD<LSE_KEY_EVENT, LSUINT8, 2UL> m_keKeyData[LSE_T_TOTALKEYS]; 00123 00124 // Timestamping timer. 00125 CTime m_tTime; 00126 00127 // Our critical section. 00128 CCriticalSection m_csCrit; 00129 }; 00130 00131 } // namespace lse 00132 00133 #endif // __LSE_KEYBOARDBUFFER_H__