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); + } } }