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

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


-- Функция генерации текста для одного элемента JSON
-- Функция генерации текста для одного элемента JSON
local function generateTemplate(entry)
local function generateTemplate(entry, frame)
     if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
     if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
         return nil
         return nil
     end
     end
   
    local nameTemplate = frame:preprocess(string.format("{{#invoke:Entity Lookup|getname|%s}}", entry.id))
      
      
     return string.format(
     return string.format(
         [[
         [[
<div class="e-s_i">{{#invoke:Entity Lookup|getname|%s}}</div><div class="e-s_s">Id = %s<br>Путь = Resources/Textures/%s<br></div><div class="copy-icon">📋</div><br>
<div class="e-s_i">%s</div><div class="e-s_s">Id = %s<br>Путь = Resources/Textures/%s<br></div><div class="copy-icon">📋</div><br>
]],
]],
         entry.id,
         nameTemplate,
         entry.id,
         entry.id,
         entry.Sprite.sprite
         entry.Sprite.sprite
Строка 40: Строка 42:
     local result = {}
     local result = {}


    -- Проходим по всем элементам и генерируем шаблон
     for _, entry in ipairs(data) do
     for _, entry in ipairs(data) do
         local template = generateTemplate(entry)
         local template = generateTemplate(entry, frame)
         if template then
         if template then
             table.insert(result, template)
             table.insert(result, template)

Версия от 18:43, 20 января 2025

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

local p = {}

-- Загрузка данных
local function loadData(filePath)
    local page = mw.title.new(filePath)
    if not page then
        return nil
    end
    local content = page:getContent()
    if not content then
        return nil
    end
    return mw.text.jsonDecode(content)
end

-- Функция генерации текста для одного элемента JSON
local function generateTemplate(entry, frame)
    if not entry.id or not entry.Sprite or not entry.Sprite.sprite then
        return nil
    end
    
    local nameTemplate = frame:preprocess(string.format("{{#invoke:Entity Lookup|getname|%s}}", entry.id))
    
    return string.format(
        [[
<div class="e-s_i">%s</div><div class="e-s_s">Id = %s<br>Путь = Resources/Textures/%s<br></div><div class="copy-icon">📋</div><br>
]],
        nameTemplate,
        entry.id,
        entry.Sprite.sprite
    )
end

-- Основная функция модуля
function p.main(frame)
    -- Загрузка данных из JSON-файла
    local data = loadData('User:IanComradeBot/prototypes/entity sprite.json')
    if not data or type(data) ~= 'table' then
        return 'Ошибка: Невозможно загрузить данные из JSON.'
    end
    
    local result = {}

    -- Проходим по всем элементам и генерируем шаблон
    for _, entry in ipairs(data) do
        local template = generateTemplate(entry, frame)
        if template then
            table.insert(result, template)
        end
    end
    
    return table.concat(result, "\n")
end

return p