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

Материал из Adventure Station
Нет описания правки
мНет описания правки
Метка: ручная отмена
 
(не показана 1 промежуточная версия этого же участника)

Текущая версия от 20:46, 17 марта 2025

Для документации этого модуля может быть создана страница Модуль:Entity Sprite/doc

-- Загрузка данных
local spriteData = mw.loadData("Модуль:WikiBotADT/prototypes/entity sprite.json/data")

local p = {}

-- Функция для получения таблицы данных
function p.getData()
    return spriteData
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(spriteData) 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(spriteData) 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(spriteData) do
            if getSpritePath(entry) == id then
                return entry.id
            end
        end
        return "Ошибка: путь не найден"
    else
        return "Ошибка: неизвестный режим"
    end
end

return p