a lot of vars rewrite
This commit is contained in:
parent
ca164ae161
commit
fabf8a7e28
|
@ -29,8 +29,18 @@ stead = {
|
||||||
end
|
end
|
||||||
return
|
return
|
||||||
end,
|
end,
|
||||||
|
modules_ini = {},
|
||||||
|
module_init = function(f, ...)
|
||||||
|
if type(f) ~= 'function' then
|
||||||
|
error ("Wrong parameter to mod_init.", 2);
|
||||||
|
end
|
||||||
|
stead.table.insert(stead.modules_ini, f);
|
||||||
|
f();
|
||||||
|
end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
module_init = stead.module_init;
|
||||||
|
|
||||||
function stead.getcmd(str)
|
function stead.getcmd(str)
|
||||||
local a = {}
|
local a = {}
|
||||||
local n = 1
|
local n = 1
|
||||||
|
@ -2439,5 +2449,9 @@ stead.init = function(s)
|
||||||
dsc = 'No main room defined.',
|
dsc = 'No main room defined.',
|
||||||
}
|
}
|
||||||
s.functions = {} -- code blocks
|
s.functions = {} -- code blocks
|
||||||
|
local k,v
|
||||||
|
for k,v in ipairs(s.modules_ini) do
|
||||||
|
v();
|
||||||
|
end
|
||||||
end
|
end
|
||||||
stead:init();
|
stead:init();
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
function isForSave(k, v, s) -- k - key, v - value, s -- parent table
|
function isForSave(k, v, s) -- k - key, v - value, s -- parent table
|
||||||
local i,o
|
local i,o
|
||||||
if type(s.var) == 'table' then
|
if type(s.variables) == 'table' then
|
||||||
for i,o in ipairs(s.var) do
|
for i,o in ipairs(s.variables) do
|
||||||
if o == k then
|
if o == k then
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
@ -16,15 +16,35 @@ function isForSave(k, v, s) -- k - key, v - value, s -- parent table
|
||||||
return stead.string.find(k, '_') == 1
|
return stead.string.find(k, '_') == 1
|
||||||
end
|
end
|
||||||
|
|
||||||
|
function __vars_add(s, v)
|
||||||
|
local k, o
|
||||||
|
for k,o in pairs(v) do
|
||||||
|
if tonumber(k) then
|
||||||
|
stead.table.insert(s.variables, o);
|
||||||
|
elseif s.variables[k] then
|
||||||
|
error ("Variable overwrites variables object: "..tostring(k))
|
||||||
|
elseif k ~= 'variable_type' then
|
||||||
|
s.variables[k] = o
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
function __vars_fill(v)
|
function __vars_fill(v)
|
||||||
local k,o
|
local k,o
|
||||||
if type(v) ~= 'table' then
|
if type(v) ~= 'table' then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
if type(v.var) == 'table' then
|
for k,o in ipairs(v) do
|
||||||
|
if type(o) == 'table' and o.variable_type then
|
||||||
|
if type(v.variables) ~= 'table' then v.variables = {} end
|
||||||
|
__vars_add(v, o);
|
||||||
|
v[k] = nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if type(v.variables) == 'table' then
|
||||||
local k,o
|
local k,o
|
||||||
local vars = {}
|
local vars = {}
|
||||||
for k,o in pairs(v.var) do
|
for k,o in pairs(v.variables) do
|
||||||
if tonumber(k) and type(o) == 'string' then
|
if tonumber(k) and type(o) == 'string' then
|
||||||
stead.table.insert(vars, o)
|
stead.table.insert(vars, o)
|
||||||
else
|
else
|
||||||
|
@ -35,7 +55,7 @@ function __vars_fill(v)
|
||||||
stead.table.insert(vars, k);
|
stead.table.insert(vars, k);
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
v.var = vars;
|
v.variables = vars;
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -53,3 +73,19 @@ function(f, v, ...)
|
||||||
__vars_fill(v)
|
__vars_fill(v)
|
||||||
return f(v, unpack(arg))
|
return f(v, unpack(arg))
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
stead.module_init(function()
|
||||||
|
variables = {}
|
||||||
|
end)
|
||||||
|
|
||||||
|
function var(v)
|
||||||
|
v.variable_type = true
|
||||||
|
return v
|
||||||
|
end
|
||||||
|
|
||||||
|
function global(v)
|
||||||
|
if type(v) ~= 'table' then
|
||||||
|
error("Wrong parameter to global.", 2);
|
||||||
|
end
|
||||||
|
__vars_add(_G, v);
|
||||||
|
end
|
||||||
|
|
Reference in a new issue