Feature: Settings compatibility.

master
aa6 2019-05-25 10:02:04 +03:00
parent a75b37e09b
commit a0f68e63f5
8 changed files with 117 additions and 27 deletions

View File

@ -1 +1 @@
0.8.1
0.9.0

View File

@ -8,8 +8,8 @@ minetest_wadsprint.SAVE_PLAYERS_STATS_TO_FILE = true
minetest_wadsprint.PLAYERS_STATS_FILE_LIMIT_RECORDS = 1000
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS = 1
minetest_wadsprint.PLAYER_CONTROLS_CHECK_PERIOD_SECONDS = 0.1
minetest_wadsprint.SPRINT_SPEED_MODIFIER_COEFFICIENT = 3.8
minetest_wadsprint.SPRINT_JUMP_HEIGHT_MODIFIER_COEFFICIENT = 1.2
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_PERCENTS = 380
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_PERCENTS = 120
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS = 0.05 -- % decrease
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS = 0.01 -- % increase
-- Config values for `hudbars` mod (totally optional, applied only if installed).

View File

@ -3,6 +3,8 @@
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_savetable.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_file_exists.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_eventemitter.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_file_get_contents.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()).."/lib_file_put_contents.lua")
minetest_wadsprint =
{
api = { events = EventEmitter:new() },
@ -22,29 +24,12 @@ minetest_wadsprint =
-- <playername string>:
-- stamina: <float>
},
version = io.open(minetest.get_modpath(minetest.get_current_modname()).."/VERSION","r"):read("*all"),
version = file_get_contents(minetest.get_modpath(minetest.get_current_modname()).."/VERSION"),
savepath = minetest.get_worldpath().."/mod_minetest_wadsprint_saved_players_stats.dat",
worldconfig = minetest.get_worldpath().."/mod_minetest_wadsprint_config.lua",
}
dofile(minetest.get_modpath(minetest.get_current_modname()).."/config.lua") -- Load default config.
if file_exists(minetest_wadsprint.worldconfig) then -- Load world-specific config (if present).
print("Loading minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
dofile(minetest_wadsprint.worldconfig)
else
print("Creating minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
io.open(minetest_wadsprint.worldconfig,"w") -- Create empty world config (for user's convenience).
:write("-- World-specific config. Copy here values from `mods/minetest_wadsprint/config.lua`:\n")
end
-- Calculating decrease and increase rates per period, based on that of seconds.
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
( minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS / 100 )
)
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
( minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS / 100 )
)
-- Initializing HUD bars.
dofile(minetest.get_modpath(minetest.get_current_modname()).."/config.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()).."/init_config.lua")
dofile(minetest.get_modpath(minetest.get_current_modname()).."/init_hudbars.lua")
----------------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------- api.stats() --
@ -192,15 +177,15 @@ function minetest_wadsprint.set_sprinting_physics(player,is_on)
if is_on == true then
player.obj:set_physics_override(
{
jump = physics.jump - 1 + minetest_wadsprint.SPRINT_JUMP_HEIGHT_MODIFIER_COEFFICIENT,
speed = physics.speed - 1 + minetest_wadsprint.SPRINT_SPEED_MODIFIER_COEFFICIENT,
jump = physics.jump - 1 + minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT,
speed = physics.speed - 1 + minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT,
})
else
if player.is_sprinting_physics_on ~= nil then
player.obj:set_physics_override(
{
jump = physics.jump + 1 - minetest_wadsprint.SPRINT_JUMP_HEIGHT_MODIFIER_COEFFICIENT,
speed = physics.speed + 1 - minetest_wadsprint.SPRINT_SPEED_MODIFIER_COEFFICIENT,
jump = physics.jump + 1 - minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT,
speed = physics.speed + 1 - minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT,
})
end
end

59
init_config.lua Normal file
View File

@ -0,0 +1,59 @@
-- Processing in-game settings. In-game settings are preferrable
-- over global config.lua values.
function minetest_wadsprint.load_minetest_settings_key(key,type)
if type == "int" then
if minetest.settings:get("minetest_wadsprint."..key) ~= nil then
minetest_wadsprint[key] = tonumber(minetest.settings:get("minetest_wadsprint."..key))
end
elseif type == "bool" then
if minetest.settings:get_bool("minetest_wadsprint."..key) ~= nil then
minetest_wadsprint[key] = minetest.settings:get_bool("minetest_wadsprint."..key)
end
end
end
minetest_wadsprint.load_minetest_settings_key("ENABLE_INGAME_SETTINGS","bool")
if minetest_wadsprint.ENABLE_INGAME_SETTINGS == true then
print("In-game minetest settings are enabled. Loading them.")
minetest_wadsprint.load_minetest_settings_key("HIDE_HUD_BARS","bool")
minetest_wadsprint.load_minetest_settings_key("STAMINA_MAX_VALUE","int")
minetest_wadsprint.load_minetest_settings_key("DYSPNEA_THRESHOLD_VALUE","int")
minetest_wadsprint.load_minetest_settings_key("SAVE_PLAYERS_STATS_TO_FILE","bool")
minetest_wadsprint.load_minetest_settings_key("PLAYERS_STATS_FILE_LIMIT_RECORDS","int")
minetest_wadsprint.load_minetest_settings_key("PLAYER_STATS_UPDATE_PERIOD_SECONDS","int")
minetest_wadsprint.load_minetest_settings_key("PLAYER_CONTROLS_CHECK_PERIOD_SECONDS","int")
minetest_wadsprint.load_minetest_settings_key("SPRINT_RUN_SPEED_BOOST_COEFFICIENT","int")
minetest_wadsprint.load_minetest_settings_key("SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT","int")
minetest_wadsprint.load_minetest_settings_key("SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS","int")
minetest_wadsprint.load_minetest_settings_key("SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS","int")
else
print("In-game minetest settings are disabled. Ignoring them.")
end
-- Processing world-specific config. World-specific values are preferrable
-- over both global config and in-game settings.
if file_exists(minetest_wadsprint.worldconfig) then
print("Loading minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
dofile(minetest_wadsprint.worldconfig)
else
print("Creating minetest_wadsprint world-specific config: "..minetest_wadsprint.worldconfig)
file_put_contents(
minetest_wadsprint.worldconfig,
"-- World-specific config. Copy here values from `mods/minetest_wadsprint/config.lua`:\n"
)
end
-- Processing some config values to avoid further unnecessary calculations.
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_COEFFICIENT = (
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_PERCENTS / 100
)
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_COEFFICIENT = (
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_PERCENTS / 100
)
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
( minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS / 100 )
)
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_UPDATE_PERIOD_COEFFICIENT = (
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS *
( minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS / 100 )
)

View File

@ -0,0 +1,6 @@
function file_get_contents(file)
local fp = io.open(file,"r")
local data = fp:read("*all")
fp:close()
return data
end

View File

@ -0,0 +1,5 @@
function file_put_contens(file,data)
local fp = io.open(file,"w")
fp:write(data)
fp:close()
end

35
settingtypes.txt Normal file
View File

@ -0,0 +1,35 @@
# If this options is disabled, no other settings option will have effect over default global config values. In contrary, world-specific config values will be still preferred over this in-game settings.
minetest_wadsprint.ENABLE_INGAME_SETTINGS (ENABLE ALL THE MOD SETTINGS BELOW) bool false
# If enabled, stamina HUD bar will not be shown.
minetest_wadsprint.HIDE_HUD_BARS (Hide HUD bars) bool false
# Absolutely arbitrary value to make calculations more convenient.
minetest_wadsprint.STAMINA_MAX_VALUE (Stamina max value in points) int 100
# Stamina minimum level when running will not be possible.
minetest_wadsprint.DYSPNEA_THRESHOLD_VALUE (Dyspnea threshold value in points) int 3
# Saves stats to a special file in a world directory. If disabled, players will be able to reset their stamina to maximum by leaving and immediately joining a game.
minetest_wadsprint.SAVE_PLAYERS_STATS_TO_FILE (Save players stats to file on disconnect) bool true
# Stats file limit to prevent HDD overflow or large file reading lag when player joins.
minetest_wadsprint.PLAYERS_STATS_FILE_LIMIT_RECORDS (Stats save file records max limit) int 1000
# In-game cycle interval of players' stamina recalculation.
minetest_wadsprint.PLAYER_STATS_UPDATE_PERIOD_SECONDS (Player in-game stats update cycle period in seconds) float 1
# In-game cycle interval of reading players' controls.
minetest_wadsprint.PLAYER_CONTROLS_CHECK_PERIOD_SECONDS (Player in-game controls check cycle period in seconds) float 0.1
# Running boost coefficient.
minetest_wadsprint.SPRINT_RUN_SPEED_BOOST_PERCENTS (Sprint run speed boost percent %) float 380
# Jumping boost coefficient.
minetest_wadsprint.SPRINT_JUMP_HEIGHT_BOOST_PERCENTS (Sprint jump height boost percent %) float 120
# Calculated in percents % off STAMINA_MAX_VALUE.
minetest_wadsprint.SPRINT_STAMINA_DECREASE_PER_SECOND_PERCENTS (Stamina decrease percent % per second when running) float 0.05
# Calculated in percents % off STAMINA_MAX_VALUE.
minetest_wadsprint.SPRINT_STAMINA_INCREASE_PER_SECOND_PERCENTS (Stamina increase percent % per second when not running) float 0.01

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB