You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
39 lines
946 B
39 lines
946 B
3 years ago
|
local string_lower = string.lower
|
||
|
local pairs = pairs
|
||
|
|
||
|
local w2l
|
||
|
local force_slk
|
||
|
local default
|
||
|
|
||
|
local function add_obj(type, name, level_key, obj)
|
||
|
local new_obj = {}
|
||
|
for key, value in pairs(obj) do
|
||
|
new_obj[string_lower(key)] = value
|
||
|
end
|
||
|
new_obj._id = name
|
||
|
new_obj._max_level = obj[level_key]
|
||
|
new_obj._type = type
|
||
|
new_obj._obj = true
|
||
|
if not default or not default[new_obj._parent] then
|
||
|
force_slk = true
|
||
|
end
|
||
|
return new_obj
|
||
|
end
|
||
|
|
||
|
return function (w2l_, type, buf)
|
||
|
w2l = w2l_
|
||
|
default = w2l:get_default()[type]
|
||
|
local lni = w2l:parse_lni(buf)
|
||
|
local metadata = w2l:metadata()[type]
|
||
|
local level_key = w2l.info.key.max_level[type]
|
||
|
if level_key then
|
||
|
level_key = metadata[level_key].field
|
||
|
end
|
||
|
local data = {}
|
||
|
force_slk = false
|
||
|
for name, obj in pairs(lni) do
|
||
|
data[name] = add_obj(type, name, level_key, obj)
|
||
|
end
|
||
|
return data, force_slk
|
||
|
end
|