aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsfan5 <sfan5@live.de>2012-08-19 13:15:42 +0200
committerPerttu Ahola <celeron55@gmail.com>2012-09-01 09:48:07 +0300
commit43ebec2be1949aa5eac127df7cb902d37e4e461b (patch)
tree1ef986fe8fd9ae92fd2e9c1d1ed48f57f1b70a06
parentf60227f112a36d943c83d4d1ac0b24754fbd537e (diff)
downloadminetest-43ebec2be1949aa5eac127df7cb902d37e4e461b.tar.gz
minetest-43ebec2be1949aa5eac127df7cb902d37e4e461b.tar.bz2
minetest-43ebec2be1949aa5eac127df7cb902d37e4e461b.zip
Make shift the default descent control on ladders and when flying
"aux1_descends" setting switches to the old descend control.
-rw-r--r--minetest.conf.example8
-rw-r--r--src/defaultsettings.cpp1
-rw-r--r--src/localplayer.cpp75
3 files changed, 65 insertions, 19 deletions
diff --git a/minetest.conf.example b/minetest.conf.example
index adeb3c8f6..3f292c01e 100644
--- a/minetest.conf.example
+++ b/minetest.conf.example
@@ -15,7 +15,7 @@
# https://bitbucket.org/celeron55/minetest/src/tip/src/defaultsettings.cpp
#
# A vim command to convert most of defaultsettings.cpp to conf file format:
-# :'<,'>s/\tg_settings\.setDefault("\([^"]*\)", "\([^"]*\)");.*/#\1 = \2/g
+# :'<,'>s/\tsettings->setDefault("\([^"]*\)", "\([^"]*\)");.*/#\1 = \2/g
# Note: Some of the settings are implemented in Lua
#
@@ -49,8 +49,14 @@
#keymap_freemove = KEY_KEY_K
#keymap_fastmove = KEY_KEY_J
#keymap_screenshot = KEY_F12
+# If true, keymap_special1 instead of keymap_sneak is used for climbing down and descending
+#aux1_descends = false
# Some (temporary) keys for debugging
#keymap_print_debug_stacks = KEY_KEY_P
+#keymap_quicktune_prev = KEY_HOME
+#keymap_quicktune_next = KEY_END
+#keymap_quicktune_dec = KEY_NEXT
+#keymap_quicktune_inc = KEY_PRIOR
# Minimum FPS
# The amount of rendered stuff is dynamically set according to this
diff --git a/src/defaultsettings.cpp b/src/defaultsettings.cpp
index 6b85feb60..3b37c18dc 100644
--- a/src/defaultsettings.cpp
+++ b/src/defaultsettings.cpp
@@ -52,6 +52,7 @@ void set_default_settings(Settings *settings)
settings->setDefault("keymap_toggle_profiler", "KEY_F6");
settings->setDefault("keymap_increase_viewing_range_min", "+");
settings->setDefault("keymap_decrease_viewing_range_min", "-");
+ settings->setDefault("aux1_descends", "false");
// Some (temporary) keys for debugging
settings->setDefault("keymap_print_debug_stacks", "KEY_KEY_P");
settings->setDefault("keymap_quicktune_prev", "KEY_HOME");
diff --git a/src/localplayer.cpp b/src/localplayer.cpp
index c1bfa3422..ee4fcd4e5 100644
--- a/src/localplayer.cpp
+++ b/src/localplayer.cpp
@@ -359,31 +359,70 @@ void LocalPlayer::applyControl(float dtime)
if(free_move && fast_move)
superspeed = true;
- // Auxiliary button 1 (E)
- if(control.aux1)
+ // Old descend control
+ if(g_settings->getBool("aux1_descends"))
{
- if(free_move)
+ // Auxiliary button 1 (E)
+ if(control.aux1)
{
- // In free movement mode, aux1 descends
- v3f speed = getSpeed();
- if(fast_move)
- speed.Y = -20*BS;
+ if(free_move)
+ {
+ // In free movement mode, aux1 descends
+ v3f speed = getSpeed();
+ if(fast_move)
+ speed.Y = -20*BS;
+ else
+ speed.Y = -walkspeed_max;
+ setSpeed(speed);
+ }
+ else if(is_climbing)
+ {
+ v3f speed = getSpeed();
+ speed.Y = -3*BS;
+ setSpeed(speed);
+ }
else
- speed.Y = -walkspeed_max;
- setSpeed(speed);
+ {
+ // If not free movement but fast is allowed, aux1 is
+ // "Turbo button"
+ if(fast_move)
+ superspeed = true;
+ }
}
- else if(is_climbing)
+ }
+ // New minecraft-like descend control
+ else
+ {
+ // Auxiliary button 1 (E)
+ if(control.aux1)
{
- v3f speed = getSpeed();
- speed.Y = -3*BS;
- setSpeed(speed);
+ if(!free_move && !is_climbing)
+ {
+ // If not free movement but fast is allowed, aux1 is
+ // "Turbo button"
+ if(fast_move)
+ superspeed = true;
+ }
}
- else
+
+ if(control.sneak)
{
- // If not free movement but fast is allowed, aux1 is
- // "Turbo button"
- if(fast_move)
- superspeed = true;
+ if(free_move)
+ {
+ // In free movement mode, sneak descends
+ v3f speed = getSpeed();
+ if(fast_move)
+ speed.Y = -20*BS;
+ else
+ speed.Y = -walkspeed_max;
+ setSpeed(speed);
+ }
+ else if(is_climbing)
+ {
+ v3f speed = getSpeed();
+ speed.Y = -3*BS;
+ setSpeed(speed);
+ }
}
}