From 7cbb032a439e51720302553da282a6fb80587da5 Mon Sep 17 00:00:00 2001 From: Dirk Sohler Date: Fri, 28 Jul 2017 18:59:33 +0200 Subject: [PATCH] outsource config loading --- init.lua | 53 ++++++++++++++---------------------------- system/get_options.lua | 14 +++++++++++ 2 files changed, 32 insertions(+), 35 deletions(-) create mode 100644 system/get_options.lua diff --git a/init.lua b/init.lua index 8e58e4d..e174628 100644 --- a/init.lua +++ b/init.lua @@ -1,48 +1,31 @@ -- Convert a given x,y string into a table {x=given_x, y=given_y} and return -- it to be used of the screen location parameters in the HUD definition -local _mtimer_location_value = function (o) +local mtimer_location_value = function (o) local x = o:gsub(',[^,]+$', '') local y = o:gsub('^[^,]+,', '') return {x=x, y=y} end +local modpath = minetest.get_modpath(minetest.get_current_modname())..DIR_DELIM +local options = dofile(modpath..'system'..DIR_DELIM..'get_options.lua') -local _mtimer_get_options = function () - local path = minetest.get_modpath(minetest.get_current_modname()) - local file = io.open(path..DIR_DELIM..'settingtypes.txt', 'rb') - local result = {} - - for line in file:lines() do - if line:match("^([a-zA-Z])") then - local name = line:gsub(' .+', '') - local default_value = line:gsub('^[^ ]+ %b() %a+ ', '') - local set_value = minetest.setting_get(name) - result[name] = set_value or default_value - end - end - - return result -end - -local _options = _mtimer_get_options() - -local interval = _options['mtimer_update_interval'] -local placeholder = _options['mtimer_placeholder'] -local font_color = _options['mtimer_font_color'] +local interval = options['mtimer_update_interval'] +local placeholder = options['mtimer_placeholder'] +local font_color = options['mtimer_font_color'] local format = { - locale = _options['mtimer_locale'], - start = _options['mtimer_session_start'], - runtime = _options['mtimer_session_runtime'], - current = _options['mtimer_current_time'], - ingame = _options['mtimer_ingame_time'], - output = _options['mtimer_output_format'] + locale = options['mtimer_locale'], + start = options['mtimer_session_start'], + runtime = options['mtimer_session_runtime'], + current = options['mtimer_current_time'], + ingame = options['mtimer_ingame_time'], + output = options['mtimer_output_format'] } local location = { - position = _mtimer_location_value(_options['mtimer_position']), - alignment = _mtimer_location_value(_options['mtimer_alignment']), - offset = _mtimer_location_value(_options['mtimer_offset']) + position = mtimer_location_value(options['mtimer_position']), + alignment = mtimer_location_value(options['mtimer_alignment']), + offset = mtimer_location_value(options['mtimer_offset']) } local playerData = {} @@ -63,7 +46,7 @@ minetest.register_on_joinplayer(function(player) startTime = os.time(), hudID = _hudID } - minetest.after(5, _mtimer_changeText, player) + minetest.after(5, mtimer_changeText, player) end, player) end) @@ -74,7 +57,7 @@ minetest.register_on_leaveplayer(function(player) end) -function _mtimer_changeText(player) +function mtimer_changeText(player) local playerName = player:get_player_name() if playerName == '' then return end @@ -108,5 +91,5 @@ function _mtimer_changeText(player) os.setlocale(currentLocale) -- Restore game-detected locale player:hud_change(hudID, 'text', res) - minetest.after(interval, _mtimer_changeText, player) + minetest.after(interval, mtimer_changeText, player) end diff --git a/system/get_options.lua b/system/get_options.lua new file mode 100644 index 0000000..4353d38 --- /dev/null +++ b/system/get_options.lua @@ -0,0 +1,14 @@ +local path = minetest.get_modpath(minetest.get_current_modname()) +local file = io.open(path..DIR_DELIM..'settingtypes.txt', 'rb') +local result = {} + +for line in file:lines() do + if line:match("^([a-zA-Z])") then + local name = line:gsub(' .+', '') + local default_value = line:gsub('^[^ ]+ %b() %a+ ', '') + local set_value = minetest.setting_get(name) + result[name] = set_value or default_value + end +end + +return result