Модуль:Entity Sprite: различия между версиями
Pok (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
Pok (обсуждение | вклад) мНет описания правки |
||
| Строка 13: | Строка 13: | ||
if type(t1) ~= "table" or type(t2) ~= "table" then return false end | if type(t1) ~= "table" or type(t2) ~= "table" then return false end | ||
-- Если это массивы, проверяем их содержимое без учета порядка | |||
local function isArray(t) | |||
local i = 0 | |||
for _ in pairs(t) do | |||
i = i + 1 | |||
if t[i] == nil then return false end | |||
end | |||
return true | |||
end | |||
if isArray(t1) and isArray(t2) then | |||
if #t1 ~= #t2 then return false end | |||
local matched = {} | |||
for _, v1 in ipairs(t1) do | |||
local found = false | |||
for j, v2 in ipairs(t2) do | |||
if not matched[j] and deepEqual(v1, v2) then | |||
matched[j] = true | |||
found = true | |||
break | |||
end | |||
end | |||
if not found then return false end | |||
end | |||
return true | |||
end | |||
-- Если это таблицы, проверяем их содержимое | |||
for k, v in pairs(t1) do | for k, v in pairs(t1) do | ||
if t2[k] == nil | if t2[k] == nil or not deepEqual(v, t2[k]) then | ||
return false | return false | ||
end | end | ||
| Строка 24: | Строка 49: | ||
for k, v in pairs(t2) do | for k, v in pairs(t2) do | ||
if t1[k] == nil then | if t1[k] == nil then | ||
return false | |||
return false | |||
end | end | ||
end | end | ||