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_jump = KEY_SPACE
#keymap_sneak = KEY_LSHIFT #keymap_sneak = KEY_LSHIFT
#keymap_inventory = KEY_KEY_I #keymap_inventory = KEY_KEY_I
#keymap_zoom = KEY_KEY_Z
# Go down ladder / go down in fly mode / go fast in fast mode # Go down ladder / go down in fly mode / go fast in fast mode
#keymap_special1 = KEY_KEY_E #keymap_special1 = KEY_KEY_E
#keymap_chat = KEY_KEY_T #keymap_chat = KEY_KEY_T
@ -55,6 +56,8 @@
#doubletap_jump = false #doubletap_jump = false
# If false aux1 is used to fly fast # If false aux1 is used to fly fast
#always_fly_fast = true #always_fly_fast = true
# FOV when using zoom, default 15
#zoom_fov=15
# Some (temporary) keys for debugging # Some (temporary) keys for debugging
#keymap_print_debug_stacks = KEY_KEY_P #keymap_print_debug_stacks = KEY_KEY_P
#keymap_quicktune_prev = KEY_HOME #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 // *100.0 helps in large map coordinates
m_cameranode->setTarget(m_camera_position + 100 * m_camera_direction); m_cameranode->setTarget(m_camera_position + 100 * m_camera_direction);
// Get FOV setting // Get FOV
f32 fov_degrees = g_settings->getFloat("fov"); f32 fov_degrees;
fov_degrees = MYMAX(fov_degrees, 10.0); if (player->zoom) {
fov_degrees = MYMIN(fov_degrees, 170.0); 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 // FOV and aspect ratio
m_aspect = (f32)screensize.X / (f32) screensize.Y; 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_jump", "KEY_SPACE");
settings->setDefault("keymap_sneak", "KEY_LSHIFT"); settings->setDefault("keymap_sneak", "KEY_LSHIFT");
settings->setDefault("keymap_drop", "KEY_KEY_Q"); settings->setDefault("keymap_drop", "KEY_KEY_Q");
settings->setDefault("keymap_zoom", "KEY_KEY_Z");
settings->setDefault("keymap_inventory", "KEY_KEY_I"); settings->setDefault("keymap_inventory", "KEY_KEY_I");
settings->setDefault("keymap_special1", "KEY_KEY_E"); settings->setDefault("keymap_special1", "KEY_KEY_E");
settings->setDefault("keymap_chat", "KEY_KEY_T"); settings->setDefault("keymap_chat", "KEY_KEY_T");
@ -59,6 +60,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("aux1_descends", "false"); settings->setDefault("aux1_descends", "false");
settings->setDefault("doubletap_jump", "false"); settings->setDefault("doubletap_jump", "false");
settings->setDefault("always_fly_fast", "true"); settings->setDefault("always_fly_fast", "true");
settings->setDefault("zoom_fov", "15");
// Some (temporary) keys for debugging // Some (temporary) keys for debugging
settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P"); settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P");

View File

@ -1886,7 +1886,14 @@ void the_game(
+ itos(range_new)); + itos(range_new));
statustext_time = 0; statustext_time = 0;
} }
if (input->isKeyDown(getKeySetting("keymap_zoom"))) {
player->zoom=true;
} else {
player->zoom=false;
}
// Reset jump_timer // Reset jump_timer
if(!input->isKeyDown(getKeySetting("keymap_jump")) && 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_INVENTORY_BUTTON,
GUI_ID_KEY_DUMP_BUTTON, GUI_ID_KEY_DUMP_BUTTON,
GUI_ID_KEY_RANGE_BUTTON, GUI_ID_KEY_RANGE_BUTTON,
GUI_ID_KEY_ZOOM_BUTTON,
// other // other
GUI_ID_CB_AUX1_DESCENDS, GUI_ID_CB_AUX1_DESCENDS,
GUI_ID_CB_DOUBLETAP_JUMP, 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_JUMP_BUTTON, gettext("Jump"), "keymap_jump");
this->add_key(GUI_ID_KEY_SNEAK_BUTTON, gettext("Sneak"), "keymap_sneak"); 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_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_INVENTORY_BUTTON, gettext("Inventory"), "keymap_inventory");
this->add_key(GUI_ID_KEY_CHAT_BUTTON, gettext("Chat"), "keymap_chat"); this->add_key(GUI_ID_KEY_CHAT_BUTTON, gettext("Chat"), "keymap_chat");
this->add_key(GUI_ID_KEY_CMD_BUTTON, gettext("Command"), "keymap_cmd"); 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), camera_barely_in_ceiling(false),
inventory(gamedef->idef()), inventory(gamedef->idef()),
hp(PLAYER_MAX_HP), hp(PLAYER_MAX_HP),
zoom(false),
peer_id(PEER_ID_INEXISTENT), peer_id(PEER_ID_INEXISTENT),
// protected // protected
m_gamedef(gamedef), m_gamedef(gamedef),

View File

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