Модуль:Entity Sprite: различия между версиями

Материал из Space Station 14 Вики
мНет описания правки
мНет описания правки
Строка 32: Строка 32:


     return "Ошибка: ID не найден"
     return "Ошибка: ID не найден"
end
function p.main(frame)
    local mode = frame.args[1]
    local id = frame.args[2]
    if not mode or not id then
        return "Ошибка: отсутствует режим или ID"
    end
    if mode == "image" then
        for _, entry in ipairs(data) do
            if entry.id == id then
                local sprite = getSpritePath(entry)
                return sprite or "Ошибка: спрайт не найден"
            end
        end
        return "Ошибка: ID не найден"
    elseif mode == "path" then
        for _, entry in ipairs(data) do
            if getSpritePath(entry) == id then
                return entry.id
            end
        end
        return "Ошибка: путь не найден"
    else
        return "Ошибка: неизвестный режим"
    end
end
end


return p
return p

Версия от 10:38, 4 февраля 2025

Шаблон:Entity Sprite


local data = mw.loadData("Module:Entity Sprite/data")
local p = {}

function p.getData()
    return data
end

local function getSpritePath(entry)
    if entry.Sprite and entry.Sprite.sprite then
        return entry.Sprite.sprite
    elseif entry.Icon and entry.Icon.sprite then
        return entry.Icon.sprite
    elseif entry.Sprite and entry.Sprite.layers then
        for _, layer in pairs(entry.Sprite.layers) do
            if layer.sprite then
                return layer.sprite
            end
        end
    end
    return nil
end

function p.getSprite(frame)
    local id = frame.args[1]
    if not id then return "Ошибка: не указан ID" end

    for _, entry in ipairs(data) do
        if entry.id == id then
            return getSpritePath(entry) or "Ошибка: спрайт не найден"
        end
    end

    return "Ошибка: ID не найден"
end

function p.main(frame)
    local mode = frame.args[1]
    local id = frame.args[2]
    if not mode or not id then
        return "Ошибка: отсутствует режим или ID"
    end

    if mode == "image" then
        for _, entry in ipairs(data) do
            if entry.id == id then
                local sprite = getSpritePath(entry)
                return sprite or "Ошибка: спрайт не найден"
            end
        end
        return "Ошибка: ID не найден"
    elseif mode == "path" then
        for _, entry in ipairs(data) do
            if getSpritePath(entry) == id then
                return entry.id
            end
        end
        return "Ошибка: путь не найден"
    else
        return "Ошибка: неизвестный режим"
    end
end

return p