Project::OSiRiON - Git repositories
Project::OSiRiON
News . About . Screenshots . Downloads . Forum . Wiki . Tracker . Git
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/client/input.cc')
-rw-r--r--src/client/input.cc35
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;