diff --git a/minetest.conf.example b/minetest.conf.example index 331d3c232..13989b8d4 100644 --- a/minetest.conf.example +++ b/minetest.conf.example @@ -40,6 +40,7 @@ #keymap_jump = KEY_SPACE #keymap_sneak = KEY_LSHIFT #keymap_inventory = KEY_KEY_I +#keymap_zoom = KEY_KEY_Z # Go down ladder / go down in fly mode / go fast in fast mode #keymap_special1 = KEY_KEY_E #keymap_chat = KEY_KEY_T @@ -55,6 +56,8 @@ #doubletap_jump = false # If false aux1 is used to fly fast #always_fly_fast = true +# FOV when using zoom, default 15 +#zoom_fov=15 # Some (temporary) keys for debugging #keymap_print_debug_stacks = KEY_KEY_P #keymap_quicktune_prev = KEY_HOME diff --git a/src/camera.cpp b/src/camera.cpp index b1e588415..34b7b474d 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -301,10 +301,15 @@ void Camera::update(LocalPlayer* player, f32 frametime, v2u32 screensize, // *100.0 helps in large map coordinates m_cameranode->setTarget(m_camera_position + 100 * m_camera_direction); - // Get FOV setting - f32 fov_degrees = g_settings->getFloat("fov"); - fov_degrees = MYMAX(fov_degrees, 10.0); - fov_degrees = MYMIN(fov_degrees, 170.0); + // Get FOV + f32 fov_degrees; + if (player->zoom) { + fov_degrees = g_settings->getFloat("zoom_fov"); + } else { + fov_degrees = g_settings->getFloat("fov"); + fov_degrees = MYMAX(fov_degrees, 10.0); + fov_degrees = MYMIN(fov_degrees, 170.0); + } // FOV and aspect ratio m_aspect = (f32)screensize.X / (f32) screensize.Y; diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp index b0ae271ce..5dfca02c6 100644 --- a/src/defaultsettings.cpp +++ b/src/defaultsettings.cpp @@ -36,6 +36,7 @@ void set_default_settings(Settings *settings) settings->setDefault("keymap_jump", "KEY_SPACE"); settings->setDefault("keymap_sneak", "KEY_LSHIFT"); settings->setDefault("keymap_drop", "KEY_KEY_Q"); + settings->setDefault("keymap_zoom", "KEY_KEY_Z"); settings->setDefault("keymap_inventory", "KEY_KEY_I"); settings->setDefault("keymap_special1", "KEY_KEY_E"); settings->setDefault("keymap_chat", "KEY_KEY_T"); @@ -59,6 +60,7 @@ void set_default_settings(Settings *settings) settings->setDefault("aux1_descends", "false"); settings->setDefault("doubletap_jump", "false"); settings->setDefault("always_fly_fast", "true"); + settings->setDefault("zoom_fov", "15"); // Some (temporary) keys for debugging settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P"); diff --git a/src/game.cpp b/src/game.cpp index 1ae29b13b..86de52a45 100644 --- a/src/game.cpp +++ b/src/game.cpp @@ -1886,7 +1886,14 @@ void the_game( + itos(range_new)); statustext_time = 0; } - + + + if (input->isKeyDown(getKeySetting("keymap_zoom"))) { + player->zoom=true; + } else { + player->zoom=false; + } + // Reset jump_timer if(!input->isKeyDown(getKeySetting("keymap_jump")) && reset_jump_timer) { diff --git a/src/guiKeyChangeMenu.cpp b/src/guiKeyChangeMenu.cpp index 4569f3d9d..3a7082806 100644 --- a/src/guiKeyChangeMenu.cpp +++ b/src/guiKeyChangeMenu.cpp @@ -55,6 +55,7 @@ enum GUI_ID_KEY_INVENTORY_BUTTON, GUI_ID_KEY_DUMP_BUTTON, GUI_ID_KEY_RANGE_BUTTON, + GUI_ID_KEY_ZOOM_BUTTON, // other GUI_ID_CB_AUX1_DESCENDS, GUI_ID_CB_DOUBLETAP_JUMP, @@ -377,6 +378,7 @@ void GUIKeyChangeMenu::init_keys() this->add_key(GUI_ID_KEY_JUMP_BUTTON, gettext("Jump"), "keymap_jump"); this->add_key(GUI_ID_KEY_SNEAK_BUTTON, gettext("Sneak"), "keymap_sneak"); this->add_key(GUI_ID_KEY_DROP_BUTTON, gettext("Drop"), "keymap_drop"); + this->add_key(GUI_ID_KEY_ZOOM_BUTTON, gettext("Zoom"), "keymap_zoom"); this->add_key(GUI_ID_KEY_INVENTORY_BUTTON, gettext("Inventory"), "keymap_inventory"); this->add_key(GUI_ID_KEY_CHAT_BUTTON, gettext("Chat"), "keymap_chat"); this->add_key(GUI_ID_KEY_CMD_BUTTON, gettext("Command"), "keymap_cmd"); diff --git a/src/player.cpp b/src/player.cpp index 4c81887be..5a240fb3f 100644 --- a/src/player.cpp +++ b/src/player.cpp @@ -35,6 +35,7 @@ Player::Player(IGameDef *gamedef): camera_barely_in_ceiling(false), inventory(gamedef->idef()), hp(PLAYER_MAX_HP), + zoom(false), peer_id(PEER_ID_INEXISTENT), // protected m_gamedef(gamedef), diff --git a/src/player.h b/src/player.h index 496c99532..c0d893415 100644 --- a/src/player.h +++ b/src/player.h @@ -227,6 +227,8 @@ public: float hurt_tilt_timer; float hurt_tilt_strength; + bool zoom; + u16 peer_id; std::string inventory_formspec;