From 1f95c377b2abfaa454b1f2298af10956d95ad941 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Wed, 13 Feb 2008 00:40:59 +0000 Subject: split client from game module --- src/client/input.cc | 149 ++++++++++++++++++++++++++++------------------------ 1 file changed, 80 insertions(+), 69 deletions(-) (limited to 'src/client/input.cc') diff --git a/src/client/input.cc b/src/client/input.cc index d3b2900..17c52bb 100644 --- a/src/client/input.cc +++ b/src/client/input.cc @@ -1,10 +1,10 @@ /* client/input.h - This file is part of the Osirion project and is distributed under - the terms and conditions of the GNU General Public License version 2 + This file is part of the Osirion project and is distributed under + the terms and conditions of the GNU General Public License version 2 */ - +#include "core/core.h" #include "client/client.h" #include "client/input.h" #include "client/console.h" @@ -13,12 +13,15 @@ #include "SDL/SDL.h" -namespace client +namespace client { -namespace input +namespace input { +// local offset to make turns +float turn_offset; + void init() { con_print << "Initializing input..." << std::endl; @@ -33,82 +36,90 @@ void shutdown() // handle key release for the game world void keyreleased(const SDL_keysym &keysym) { - switch( keysym.sym) { - case SDLK_SPACE: - camera::next_mode(); - break; - default: - break; + switch (keysym.sym) { + case SDLK_SPACE: + camera::next_mode(); + break; + default: + break; } } // handle key press events for the game world void keypressed(const SDL_keysym &keysym) { - switch( keysym.sym) { - case SDLK_LEFT: - camera::key_left(); - break; - case SDLK_RIGHT: - camera::key_right(); - break; - case SDLK_UP: - camera::key_up(); - break; - case SDLK_DOWN: - camera::key_down(); - break; - case SDLK_KP_PLUS: - // TODO set core entity params - game.ship->set_thrust(game.ship->thrust() + 0.08f); - break; - case SDLK_KP_MINUS: - // TODO set core entity params - game.ship->set_thrust(game.ship->thrust() - 0.1f); - break; - case SDLK_KP4: - // TODO set core entity params - game.ship->set_yaw(game.ship->yaw() + 10); - break; - case SDLK_KP6: - // TODO set core entity params - game.ship->set_yaw(game.ship->yaw() - 10); - break; - default: - break; + switch (keysym.sym) { + case SDLK_LEFT: + camera::key_left(); + break; + case SDLK_RIGHT: + camera::key_right(); + break; + case SDLK_UP: + camera::key_up(); + break; + case SDLK_DOWN: + camera::key_down(); + break; + case SDLK_KP_PLUS: + // TODO set core entity params + core::localplayer.controled->target_thrust += 0.08f; + break; + case SDLK_KP_MINUS: + // TODO set core entity params + core::localplayer.controled->target_thrust -= 0.1f; + break; + case SDLK_KP4: + // TODO set core entity params + turn_offset += 5; + if (turn_offset > 90) + turn_offset = 90; + break; + case SDLK_KP6: + // TODO set core entity params + turn_offset -= 5; + if (turn_offset < -90) + turn_offset = -90; + break; + default: + break; } - + } void frame(float seconds) { - SDL_Event event; - - while( SDL_PollEvent( &event ) ) { - - switch( event.type ) { - case SDL_KEYUP: - if (!console::visible() && core::connected()) - keyreleased(event.key.keysym ); - break; - case SDL_KEYDOWN: - if (event.key.keysym.sym == '`' || event.key.keysym.sym == '~') { - console::toggle(); - } else if (console::visible()) { - // send key events to the console - console::keypressed(event.key.keysym ); - } else if (core::connected()) { - // send key events to the game world - keypressed(event.key.keysym ); + SDL_Event event; + + while (SDL_PollEvent(&event)) { + + switch (event.type) { + case SDL_KEYUP: + if (!console::visible() && core::connected() && core::localplayer.controled) + // send key events to the game world + keyreleased(event.key.keysym); + break; + case SDL_KEYDOWN: + if (event.key.keysym.sym == '`' || event.key.keysym.sym == '~') { + console::toggle(); + } else if (console::visible()) { + // send key events to the console + console::keypressed(event.key.keysym); + } else if (core::connected() && core::localplayer.controled) { + // send key events to the game world + keypressed(event.key.keysym); + } + break; + case SDL_QUIT: + core::application()->shutdown(); + break; } - break; - case SDL_QUIT: - core::application()->shutdown(); - break; - } - - } - + + } + + if (!console::visible() && core::connected() && core::localplayer.controled) { + core::localplayer.controled->target_direction = math::degrees360f(core::localplayer.controled->direction+turn_offset); + } } } // namespace input -- cgit v1.2.3