1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- local world_path = minetest.get_worldpath()
- areas.config = {}
- local function setting(name, tp, default)
- local full_name = "areas." .. name
- local value
- if tp == "bool" then
- value = minetest.settings:get_bool(full_name)
- default = value == nil and minetest.is_yes(default)
- elseif tp == "string" then
- value = minetest.settings:get(full_name)
- elseif tp == "v3f" then
- value = minetest.setting_get_pos(full_name)
- default = value == nil and minetest.string_to_pos(default)
- elseif tp == "float" or tp == "int" then
- value = tonumber(minetest.settings:get(full_name))
- local v, other = default:match("^(%S+) (.+)")
- default = value == nil and tonumber(other and v or default)
- else
- error("Cannot parse setting type " .. tp)
- end
- if value == nil then
- value = default
- assert(default ~= nil, "Cannot parse default for " .. full_name)
- end
- --print("add", name, default, value)
- areas.config[name] = value
- end
- local file = io.open(areas.modpath .. "/settingtypes.txt", "r")
- for line in file:lines() do
- local name, tp, value = line:match("^areas%.(%S+) %(.*%) (%S+) (.*)")
- if value then
- setting(name, tp, value)
- end
- end
- file:close()
- --------------
- -- Settings --
- --------------
- setting("filename", "string", world_path.."/areas.dat")
|