comparison Applications/Sdl/SdlEngine.cpp @ 327:8716176ff7f0 am-2

added support for arrow keys
author am@osimis.io
date Tue, 16 Oct 2018 15:25:21 +0200
parents 017044be141b
children 7a364e44fbb4
comparison
equal deleted inserted replaced
326:612238b3f3e8 327:8716176ff7f0
11 * 11 *
12 * This program is distributed in the hope that it will be useful, but 12 * This program is distributed in the hope that it will be useful, but
13 * WITHOUT ANY WARRANTY; without even the implied warranty of 13 * WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Affero General Public License for more details. 15 * Affero General Public License for more details.
16 * 16 *
17 * You should have received a copy of the GNU Affero General Public License 17 * You should have received a copy of the GNU Affero General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>. 18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 **/ 19 **/
20 20
21 21
33 unsigned int height) 33 unsigned int height)
34 { 34 {
35 context_.GetCentralViewport().SetSize(width, height); 35 context_.GetCentralViewport().SetSize(width, height);
36 surface_.SetSize(width, height); 36 surface_.SetSize(width, height);
37 } 37 }
38 38
39 39
40 void SdlEngine::RenderFrame() 40 void SdlEngine::RenderFrame()
41 { 41 {
42 if (viewportChanged_) 42 if (viewportChanged_)
43 { 43 {
133 while (!stop && 133 while (!stop &&
134 SDL_PollEvent(&event)) 134 SDL_PollEvent(&event))
135 { 135 {
136 NativeStoneApplicationContext::GlobalMutexLocker locker(context_); 136 NativeStoneApplicationContext::GlobalMutexLocker locker(context_);
137 137
138 if (event.type == SDL_QUIT) 138 if (event.type == SDL_QUIT)
139 { 139 {
140 stop = true; 140 stop = true;
141 break; 141 break;
142 } 142 }
143 else if (event.type == SDL_MOUSEBUTTONDOWN) 143 else if (event.type == SDL_MOUSEBUTTONDOWN)
144 { 144 {
145 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); 145 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
146 146
147 switch (event.button.button) 147 switch (event.button.button)
148 { 148 {
149 case SDL_BUTTON_LEFT: 149 case SDL_BUTTON_LEFT:
150 context_.GetCentralViewport().MouseDown(MouseButton_Left, event.button.x, event.button.y, modifiers); 150 context_.GetCentralViewport().MouseDown(MouseButton_Left, event.button.x, event.button.y, modifiers);
151 break; 151 break;
152 152
153 case SDL_BUTTON_RIGHT: 153 case SDL_BUTTON_RIGHT:
154 context_.GetCentralViewport().MouseDown(MouseButton_Right, event.button.x, event.button.y, modifiers); 154 context_.GetCentralViewport().MouseDown(MouseButton_Right, event.button.x, event.button.y, modifiers);
155 break; 155 break;
156 156
157 case SDL_BUTTON_MIDDLE: 157 case SDL_BUTTON_MIDDLE:
158 context_.GetCentralViewport().MouseDown(MouseButton_Middle, event.button.x, event.button.y, modifiers); 158 context_.GetCentralViewport().MouseDown(MouseButton_Middle, event.button.x, event.button.y, modifiers);
159 break; 159 break;
160 160
161 default: 161 default:
162 break; 162 break;
163 } 163 }
164 } 164 }
165 else if (event.type == SDL_MOUSEMOTION) 165 else if (event.type == SDL_MOUSEMOTION)
166 { 166 {
167 context_.GetCentralViewport().MouseMove(event.button.x, event.button.y); 167 context_.GetCentralViewport().MouseMove(event.button.x, event.button.y);
172 } 172 }
173 else if (event.type == SDL_WINDOWEVENT) 173 else if (event.type == SDL_WINDOWEVENT)
174 { 174 {
175 switch (event.window.event) 175 switch (event.window.event)
176 { 176 {
177 case SDL_WINDOWEVENT_LEAVE: 177 case SDL_WINDOWEVENT_LEAVE:
178 context_.GetCentralViewport().MouseLeave(); 178 context_.GetCentralViewport().MouseLeave();
179 break; 179 break;
180 180
181 case SDL_WINDOWEVENT_ENTER: 181 case SDL_WINDOWEVENT_ENTER:
182 context_.GetCentralViewport().MouseEnter(); 182 context_.GetCentralViewport().MouseEnter();
183 break; 183 break;
184 184
185 case SDL_WINDOWEVENT_SIZE_CHANGED: 185 case SDL_WINDOWEVENT_SIZE_CHANGED:
186 SetSize(event.window.data1, event.window.data2); 186 SetSize(event.window.data1, event.window.data2);
187 break; 187 break;
188 188
189 default: 189 default:
190 break; 190 break;
191 } 191 }
192 } 192 }
193 else if (event.type == SDL_MOUSEWHEEL) 193 else if (event.type == SDL_MOUSEWHEEL)
194 { 194 {
195 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); 195 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
211 { 211 {
212 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount); 212 KeyboardModifiers modifiers = GetKeyboardModifiers(keyboardState, scancodeCount);
213 213
214 switch (event.key.keysym.sym) 214 switch (event.key.keysym.sym)
215 { 215 {
216 case SDLK_a: context_.GetCentralViewport().KeyPressed('a', modifiers); break; 216 case SDLK_a: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'a', modifiers); break;
217 case SDLK_b: context_.GetCentralViewport().KeyPressed('b', modifiers); break; 217 case SDLK_b: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'b', modifiers); break;
218 case SDLK_c: context_.GetCentralViewport().KeyPressed('c', modifiers); break; 218 case SDLK_c: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'c', modifiers); break;
219 case SDLK_d: context_.GetCentralViewport().KeyPressed('d', modifiers); break; 219 case SDLK_d: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'd', modifiers); break;
220 case SDLK_e: context_.GetCentralViewport().KeyPressed('e', modifiers); break; 220 case SDLK_e: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'e', modifiers); break;
221 case SDLK_f: window_.ToggleMaximize(); break; 221 case SDLK_f: window_.ToggleMaximize(); break;
222 case SDLK_g: context_.GetCentralViewport().KeyPressed('g', modifiers); break; 222 case SDLK_g: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'g', modifiers); break;
223 case SDLK_h: context_.GetCentralViewport().KeyPressed('h', modifiers); break; 223 case SDLK_h: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'h', modifiers); break;
224 case SDLK_i: context_.GetCentralViewport().KeyPressed('i', modifiers); break; 224 case SDLK_i: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'i', modifiers); break;
225 case SDLK_j: context_.GetCentralViewport().KeyPressed('j', modifiers); break; 225 case SDLK_j: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'j', modifiers); break;
226 case SDLK_k: context_.GetCentralViewport().KeyPressed('k', modifiers); break; 226 case SDLK_k: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'k', modifiers); break;
227 case SDLK_l: context_.GetCentralViewport().KeyPressed('l', modifiers); break; 227 case SDLK_l: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'l', modifiers); break;
228 case SDLK_m: context_.GetCentralViewport().KeyPressed('m', modifiers); break; 228 case SDLK_m: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'm', modifiers); break;
229 case SDLK_n: context_.GetCentralViewport().KeyPressed('n', modifiers); break; 229 case SDLK_n: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'n', modifiers); break;
230 case SDLK_o: context_.GetCentralViewport().KeyPressed('o', modifiers); break; 230 case SDLK_o: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'o', modifiers); break;
231 case SDLK_p: context_.GetCentralViewport().KeyPressed('p', modifiers); break; 231 case SDLK_p: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'p', modifiers); break;
232 case SDLK_q: stop = true; break; 232 case SDLK_q: stop = true; break;
233 case SDLK_r: context_.GetCentralViewport().KeyPressed('r', modifiers); break; 233 case SDLK_r: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'r', modifiers); break;
234 case SDLK_s: context_.GetCentralViewport().KeyPressed('s', modifiers); break; 234 case SDLK_s: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 's', modifiers); break;
235 case SDLK_t: context_.GetCentralViewport().KeyPressed('t', modifiers); break; 235 case SDLK_t: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 't', modifiers); break;
236 case SDLK_u: context_.GetCentralViewport().KeyPressed('u', modifiers); break; 236 case SDLK_u: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'u', modifiers); break;
237 case SDLK_v: context_.GetCentralViewport().KeyPressed('v', modifiers); break; 237 case SDLK_v: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'v', modifiers); break;
238 case SDLK_w: context_.GetCentralViewport().KeyPressed('w', modifiers); break; 238 case SDLK_w: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'w', modifiers); break;
239 case SDLK_x: context_.GetCentralViewport().KeyPressed('x', modifiers); break; 239 case SDLK_x: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'x', modifiers); break;
240 case SDLK_y: context_.GetCentralViewport().KeyPressed('y', modifiers); break; 240 case SDLK_y: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'y', modifiers); break;
241 case SDLK_z: context_.GetCentralViewport().KeyPressed('z', modifiers); break; 241 case SDLK_z: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, 'z', modifiers); break;
242 case SDLK_KP_0: context_.GetCentralViewport().KeyPressed('0', modifiers); break; 242 case SDLK_KP_0: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '0', modifiers); break;
243 case SDLK_KP_1: context_.GetCentralViewport().KeyPressed('1', modifiers); break; 243 case SDLK_KP_1: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '1', modifiers); break;
244 case SDLK_KP_2: context_.GetCentralViewport().KeyPressed('2', modifiers); break; 244 case SDLK_KP_2: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '2', modifiers); break;
245 case SDLK_KP_3: context_.GetCentralViewport().KeyPressed('3', modifiers); break; 245 case SDLK_KP_3: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '3', modifiers); break;
246 case SDLK_KP_4: context_.GetCentralViewport().KeyPressed('4', modifiers); break; 246 case SDLK_KP_4: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '4', modifiers); break;
247 case SDLK_KP_5: context_.GetCentralViewport().KeyPressed('5', modifiers); break; 247 case SDLK_KP_5: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '5', modifiers); break;
248 case SDLK_KP_6: context_.GetCentralViewport().KeyPressed('6', modifiers); break; 248 case SDLK_KP_6: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '6', modifiers); break;
249 case SDLK_KP_7: context_.GetCentralViewport().KeyPressed('7', modifiers); break; 249 case SDLK_KP_7: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '7', modifiers); break;
250 case SDLK_KP_8: context_.GetCentralViewport().KeyPressed('8', modifiers); break; 250 case SDLK_KP_8: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '8', modifiers); break;
251 case SDLK_KP_9: context_.GetCentralViewport().KeyPressed('9', modifiers); break; 251 case SDLK_KP_9: context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '9', modifiers); break;
252 252
253 case SDLK_PLUS: 253 case SDLK_PLUS:
254 case SDLK_KP_PLUS: 254 case SDLK_KP_PLUS:
255 context_.GetCentralViewport().KeyPressed('+', modifiers); break; 255 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '+', modifiers); break;
256 256
257 case SDLK_MINUS: 257 case SDLK_MINUS:
258 case SDLK_KP_MINUS: 258 case SDLK_KP_MINUS:
259 context_.GetCentralViewport().KeyPressed('-', modifiers); break; 259 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Generic, '-', modifiers); break;
260 260
261 default: 261 case SDLK_RIGHT:
262 break; 262 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Right, 0, modifiers); break;
263 case SDLK_LEFT:
264 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Left, 0, modifiers); break;
265 case SDLK_UP:
266 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Up, 0, modifiers); break;
267 case SDLK_DOWN:
268 context_.GetCentralViewport().KeyPressed(KeyboardKeys_Down, 0, modifiers); break;
269 default:
270 break;
263 } 271 }
264 } 272 }
265 } 273 }
266 274
267 // Small delay to avoid using 100% of CPU 275 // Small delay to avoid using 100% of CPU