Модуль:Entity Sprite: различия между версиями
Pok (обсуждение | вклад) Нет описания правки |
Pok (обсуждение | вклад) Нет описания правки |
||
| Строка 102: | Строка 102: | ||
return (#result > 0) and result or nil | return (#result > 0) and result or nil | ||
end | |||
local function findByPathAndState(data, targetPath, targetState) | |||
for entityId, entry in pairs(data) do | |||
if getSpritePath(entry) == targetPath then | |||
local states = getSpriteStates(entry) | |||
if states then | |||
for _, item in ipairs(states) do | |||
if normalizeState(item.state) == targetState then | |||
return entityId | |||
end | |||
end | |||
end | |||
end | |||
end | |||
return nil | |||
end | |||
local function findByPath(data, targetPath) | |||
for entityId, entry in pairs(data) do | |||
if getSpritePath(entry) == targetPath then | |||
return entityId | |||
end | |||
end | |||
return nil | |||
end | end | ||
| Строка 157: | Строка 184: | ||
local targetState = normalizeState(stateArg) | local targetState = normalizeState(stateArg) | ||
if targetState then | |||
if | local byState = findByPathAndState(data, targetPath, targetState) | ||
if byState then | |||
return byState | |||
end | |||
end | |||
local byPath = findByPath(data, targetPath) | |||
if byPath then | |||
return byPath | |||
end | end | ||
return "Ошибка: путь | return "Ошибка: путь не найден" | ||
end | end | ||