comparison LightClone/Source/InputManager.cpp @ 15:ee1c2510096d

Work on GUI system
author koryspansel <koryspansel@bendbroadband.com>
date Wed, 14 Sep 2011 11:04:18 -0700
parents 7081e8e6008c
children 3a63df04f3c0
comparison
equal deleted inserted replaced
14:7081e8e6008c 15:ee1c2510096d
1 /* 1 /*
2 * InputManager 2 * InputManager
3 */ 3 */
4 4
5 #include "InputManager.h" 5 #include "InputManager.h"
6 #include "EventSystem.h"
6 7
7 /* 8 /*
8 * fMouseSensitivity 9 * fMouseSensitivity
9 */ 10 */
10 static const float fMouseSensitivity = 1.5f; 11 static const float fMouseSensitivity = 1.5f;
124 { 125 {
125 hResult = pKeyboard->Acquire(); 126 hResult = pKeyboard->Acquire();
126 if(SUCCEEDED(hResult)) 127 if(SUCCEEDED(hResult))
127 { 128 {
128 hResult = pKeyboard->GetDeviceState(sizeof(kCurrentKeyboardState), kCurrentKeyboardState); 129 hResult = pKeyboard->GetDeviceState(sizeof(kCurrentKeyboardState), kCurrentKeyboardState);
129 130 }
130 for(uint32 i = 0; i < sizeof(kCurrentKeyboardState) / sizeof(kCurrentKeyboardState[0]); ++i) 131 }
131 { 132
132 // check for key up events 133 for(uint32 i = 0; i < sizeof(kCurrentKeyboardState) / sizeof(kCurrentKeyboardState[0]); ++i)
133 if(kPreviousKeyboardState[i] & 0x80) 134 {
134 { 135 // check for key up events
135 if(!(kCurrentKeyboardState[i] & 0x80)) 136 if(kPreviousKeyboardState[i] & 0x80)
136 { 137 {
137 InputEvent kEvent; 138 if(!(kCurrentKeyboardState[i] & 0x80))
138 kEvent.nType = InputEventType_KeyUp; 139 {
139 kEvent.nKey = i; 140 InputEvent kEvent;
140 kEvent.nDuration = 0; 141 kEvent.nType = InputEventType_KeyUp;
141 142 kEvent.nKey = i;
142 pEventSystem->Post(kEvent); 143 kEvent.nDuration = 0;
143 } 144
144 } 145 pEventSystem->Post(kEvent);
145 else 146 }
146 { 147 }
147 if(kCurrentKeyboardState[i] & 0x80) 148 else
148 { 149 {
149 InputEvent kEvent; 150 if(kCurrentKeyboardState[i] & 0x80)
150 kEvent.nType = InputEventType_KeyDown; 151 {
151 kEvent.nKey = i; 152 InputEvent kEvent;
152 kEvent.nDuration = 0; 153 kEvent.nType = InputEventType_KeyDown;
153 154 kEvent.nKey = i;
154 pEventSystem->Post(kEvent); 155 kEvent.nDuration = 0;
155 } 156
156 } 157 pEventSystem->Post(kEvent);
157 } 158 }
158 } 159 }
159 } 160 }
160 } 161 }
161 162
173 } 174 }
174 } 175 }
175 176
176 fMouseX = Clamp(fMouseX + fMouseSensitivity * kCurrentMouseState.lX, kMouseBounds.X, kMouseBounds.X + kMouseBounds.Width - 1.0f); 177 fMouseX = Clamp(fMouseX + fMouseSensitivity * kCurrentMouseState.lX, kMouseBounds.X, kMouseBounds.X + kMouseBounds.Width - 1.0f);
177 fMouseY = Clamp(fMouseY + fMouseSensitivity * kCurrentMouseState.lY, kMouseBounds.Y, kMouseBounds.Y + kMouseBounds.Height - 1.0f); 178 fMouseY = Clamp(fMouseY + fMouseSensitivity * kCurrentMouseState.lY, kMouseBounds.Y, kMouseBounds.Y + kMouseBounds.Height - 1.0f);
179
180 for(uint32 i = 0; i < sizeof(kCurrentMouseState.rgbButtons) / sizeof(kCurrentMouseState.rgbButtons[0]); ++i)
181 {
182 if(kPreviousMouseState.rgbButtons[i] & 0x80)
183 {
184 if(!(kCurrentMouseState.rgbButtons[i] & 0x80))
185 {
186 InputEvent kEvent;
187 kEvent.nType = InputEventType_MouseUp;
188 kEvent.nButton = i;
189 kEvent.nDuration = 0;
190
191 pEventSystem->Post(kEvent);
192 }
193 }
194 else
195 {
196 if(kCurrentMouseState.rgbButtons[i] & 0x80)
197 {
198 InputEvent kEvent;
199 kEvent.nType = InputEventType_MouseDown;
200 kEvent.nButton = i;
201 kEvent.nDuration = 0;
202
203 pEventSystem->Post(kEvent);
204 }
205 }
206 }
207
208 if(kCurrentMouseState.lX != 0 || kCurrentMouseState.lY != 0)
209 {
210 InputEvent kEvent;
211 kEvent.nType = InputEventType_MouseMove;
212 kEvent.fX = fMouseX;
213 kEvent.fY = fMouseY;
214
215 pEventSystem->Post(kEvent);
216 }
178 } 217 }
179 } 218 }
180 219
181 /* 220 /*
182 * SetBounds 221 * SetBounds