From d240084aa7e41725a0228e123080aa7fe8a241b7 Mon Sep 17 00:00:00 2001 From: Stijn Buys Date: Wed, 6 Aug 2008 19:35:49 +0000 Subject: target hovering, cursors and mouse and joystick interaction --- src/client/input.cc | 34 ++++++++++++++++++++++++++++++---- 1 file changed, 30 insertions(+), 4 deletions(-) (limited to 'src/client/input.cc') diff --git a/src/client/input.cc b/src/client/input.cc index 2f6fb27..fce83dc 100644 --- a/src/client/input.cc +++ b/src/client/input.cc @@ -58,18 +58,27 @@ int mouse_y = 0; float mouse_pitch = 0; float mouse_direction = 0; -// true if the mouse is in the deadzone -bool mouse_deadzone = false; + + // true if the mouse has control +const float mouse_timeout = 0.200f; // 200 ms select time-out float mouse_control_override_time = 0; bool mouse_control_override = false; bool mouse_control = false; +// true if the mouse is in the deadzone +bool mouse_deadzone = false; +// time the mouse was last moved +float mouse_lastmoved = 0; + +// true if we're using a joystick bool joystick_control = false; +// time the joystick last moved + +float joystick_lastmoved = 0; const float thruster_offset = 0.05f; -const float mouse_timeout = 0.200f; // 200 ms mouse timout int mouse_position_x() { return mouse_x; @@ -83,6 +92,16 @@ Key *last_key_pressed() { return last_key; } +float mouse_lastmoved_time() +{ + return mouse_lastmoved; +} + +float joystick_lastmoved_time() +{ + return joystick_lastmoved; +} + //--- engine functions -------------------------------------------- void func_screenshot(std::string const & args) @@ -387,7 +406,9 @@ void action_release(Key *key, std::string const &action) } else if (action.compare("+control") == 0) { mouse_control_override = false; mouse_control_override_time = 0; - if (!input_mousecontrol->value()) { + + if (!input_mousecontrol->value() || (joystick_control && mouse_control && + (render::Camera::mode() == render::Camera::Track || render::Camera::mode() == render::Camera::Cockpit))) { local_direction = 0.0f; local_pitch = 0.0f; local_roll = 0.0f; @@ -601,7 +622,10 @@ void reset() key->key_waspressed = 0; } } + last_key = 0; + mouse_lastmoved = 0; + joystick_lastmoved = 0; } void frame(float seconds) @@ -648,6 +672,7 @@ void frame(float seconds) case SDL_MOUSEMOTION: mouse_x = event.motion.x; mouse_y = event.motion.y; + mouse_lastmoved = client()->time(); break; case SDL_MOUSEBUTTONDOWN: @@ -672,6 +697,7 @@ void frame(float seconds) case SDL_JOYAXISMOTION: axis_event((int) event.jaxis.axis, (int) event.jaxis.value); + joystick_lastmoved = client()->time(); break; case SDL_KEYDOWN: -- cgit v1.2.3