diff options
Diffstat (limited to 'src/client/input.cc')
-rw-r--r-- | src/client/input.cc | 35 |
1 files changed, 21 insertions, 14 deletions
diff --git a/src/client/input.cc b/src/client/input.cc index 96cd032..c46c66f 100644 --- a/src/client/input.cc +++ b/src/client/input.cc @@ -28,15 +28,10 @@ see http://docs.mandragor.org/files/Common_libs_documentation/SDL/SDL_Documentation_project_en/sdlevent.html */ -// handle key_release events +// handle key_release events for the game world void Input::handle_keyreleased(SDL_keysym* keysym) { switch( keysym->sym ) { - case '`': - case '~': - //console.toggle(); - core::cmd << "con_toggle" << std::endl; - break; case SDLK_SPACE: camera.nextmode(); break; @@ -45,13 +40,10 @@ void Input::handle_keyreleased(SDL_keysym* keysym) } } -// handle pressed keys +// handle pressed keys for the game world void Input::handle_keypressed(SDL_keysym* keysym) { switch( keysym->sym ) { - case SDLK_ESCAPE: - client::application.shutdown(); - break; case SDLK_LEFT: camera.rotate_left(); break; @@ -82,22 +74,37 @@ void Input::handle_keypressed(SDL_keysym* keysym) } -void Input::process() +void Input::frame() { SDL_Event event; while( SDL_PollEvent( &event ) ) { + switch( event.type ) { case SDL_KEYDOWN: - if (!console.visible) + /* + if (event.key.keysym.sym == SDLK_ESCAPE) { + client::application.shutdown(); + } + */ + if (core::connected() && !console.visible()) { + // send key events to the game world handle_keypressed( &event.key.keysym ); + } break; + case SDL_KEYUP: - if (console.visible) + if (event.key.keysym.sym == '`' || event.key.keysym.sym == '~') { + console.toggle(); + } else if (console.visible()) { + // send key events to the console console.handle_keyreleased( &event.key.keysym ); - else + } else if (core::connected()) { + // send key events to the game world handle_keyreleased( &event.key.keysym ); + } break; + case SDL_QUIT: client::application.shutdown(); break; |