diff options
Diffstat (limited to 'src/client/input.cc')
-rw-r--r-- | src/client/input.cc | 43 |
1 files changed, 36 insertions, 7 deletions
diff --git a/src/client/input.cc b/src/client/input.cc index 044ebc2..2f09d5b 100644 --- a/src/client/input.cc +++ b/src/client/input.cc @@ -104,10 +104,21 @@ void func_ui_chat(std::string const &args) } } -void func_ui_view(std::string const &args) +void func_view_next(std::string const &args) { if (core::application()->connected() && core::localcontrol()) { - render::Camera::next_mode(); + render::Camera::view_next(); + local_roll = 0; + local_pitch = 0; + local_direction = 0; + audio::play("ui/view"); + } +} + +void func_view_prev(std::string const &args) +{ + if (core::application()->connected() && core::localcontrol()) { + render::Camera::view_previous(); local_roll = 0; local_pitch = 0; local_direction = 0; @@ -227,9 +238,6 @@ void init() func = core::Func::add("ui_chat", func_ui_chat); func->set_info("toggle chatbox on or of"); - func = core::Func::add("ui_view", func_ui_view); - func->set_info("switch camera view"); - func = core::Func::add("ui_control",func_ui_control); func->set_info("toggle mouse control"); @@ -251,6 +259,12 @@ void init() func = core::Func::add("unbindall", func_unbind); func->set_info("unbind all keys"); + func = core::Func::add("view_next", func_view_next); + func->set_info("switch to next view"); + + func = core::Func::add("view_prev", func_view_prev); + func->set_info("switch to previous view"); + func = core::Func::add("screenshot", func_screenshot); func->set_info("make a screenshot"); @@ -406,8 +420,21 @@ Key::Modifier convert_SDL_modifier(int const sdlmodifier) void key_pressed(Key *key) { - if ((key->sym() == SDLK_ESCAPE) || (key->bind(Key::None).compare("ui_console") == 0)) { - console()->toggle(); + if (key->sym() == SDLK_ESCAPE) { + if (chat::visible()) { + chat::toggle(); + } else { + local_direction = 0.0f; + local_pitch = 0.0f; + local_roll = 0.0f; + + render::Camera::set_direction(0.0f); + render::Camera::set_pitch(0.0f); + + console()->toggle(); + } + + } else if (key->bind(Key::None).compare("ui_console") == 0) { local_direction = 0.0f; local_pitch = 0.0f; local_roll = 0.0f; @@ -415,6 +442,8 @@ void key_pressed(Key *key) render::Camera::set_direction(0.0f); render::Camera::set_pitch(0.0f); + console()->toggle(); + } else if (console()->visible()) { // send key events to the console if (key->sym() < 512) |