Add zoom, tweakable with zoom_fov, default key: Z (like optifine)

This commit is contained in:
Esteban I. Ruiz Moreno 2013-03-31 00:30:32 -03:00
parent 9b5bb5c755
commit 3390906f3a
7 changed files with 27 additions and 5 deletions

View File

@ -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

View File

@ -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;

View File

@ -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");

View File

@ -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)
{

View File

@ -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");

View File

@ -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),

View File

@ -227,6 +227,8 @@ public:
float hurt_tilt_timer;
float hurt_tilt_strength;
bool zoom;
u16 peer_id;
std::string inventory_formspec;