Модуль:Prototypes/Хранилище/Предмет: различия между версиями

Нет описания правки
мНет описания правки
Строка 19: Строка 19:
end
end


-- Формирование списка веществ
-- Форматирование одного содержимого
local function getChemOutput(data, id)
local function formatContent(content)
     local item = findDataById(data, id)
    local name = string.format('{{#invoke:Entity Lookup|getname|%s}}', content.id)
     if not item then return '' end
     local image = string.format('%s.png', content.id)
     local amount = content.amount and string.format(" [%d]", content.amount) or ""
    local prob = content.prob and string.format(" <div>%.2f</div>", content.prob) or ""
    return string.format('{{LinkСard|SideStyle=1|background-color=#d7d7ff0b|image=%s|name=%s%s%s }}', image, name, amount, prob)
end
 
-- Получение содержимого
local function getContentsOutput(contents)
    local result = ''
    for _, content in ipairs(contents) do
        result = result .. formatContent(content)
    end
    return result
end
 
-- Обработка таблиц
local function getTableOutput(tableId)
    local allSelectors = loadData('User:IanComradeBot/prototypes/AllSelector.json')
    local tableData = findDataById(allSelectors, tableId)
    local children = tableData and tableData['!type:AllSelector'] and tableData['!type:AllSelector'].children


    local solutions = item.SolutionContainerManager and item.SolutionContainerManager.solutions
     if not children then return 'Таблица не содержит элементов.' end
     if not solutions then return '' end


     local result = '<ul class="1">'
     local result = ''
     for _, solution in pairs(solutions) do
     for _, child in ipairs(children) do
         for _, reagent in ipairs(solution.reagents) do
         result = result .. formatContent(child)
            result = result .. string.format('<li>[[Химия#chem_%s|%s]] (%d ед.)</li>', reagent.ReagentId, reagent.ReagentId, reagent.Quantity)
        end
     end
     end
    result = result .. '</ul>'
     return result
     return mw.getCurrentFrame():preprocess(result)
end
end


Строка 41: Строка 56:
     local item = findDataById(data, id)
     local item = findDataById(data, id)
     if not item then return '' end
     if not item then return '' end
    local contents = item.StorageFill and item.StorageFill.contents
    local tableContainer = item.EntityTableContainerFill and item.EntityTableContainerFill.containers


     local result = wrapped and '<div class="2">' or ''
     local result = wrapped and '<div class="2">' or ''


     if contents then
     if item.StorageFill and item.StorageFill.contents then
         for _, content in ipairs(contents) do
         result = result .. getContentsOutput(item.StorageFill.contents)
            result = result .. string.format('{{LinkСard|SideStyle=1|background-color=#d7d7ff0b|image=%s.png|name={{#invoke:Entity Lookup|getname|%s}}%s }}', content.id, content.id, content.amount and string.format(" [%d]", content.amount) or "", content.prob and string.format(" <div>%c</div>]", content.prob) or "")
    elseif item.EntityTableContainerFill and item.EntityTableContainerFill.containers then
        end
         local tableId = item.EntityTableContainerFill.containers.storagebase and item.EntityTableContainerFill.containers.storagebase.tableId
    elseif tableContainer then
         local tableId = tableContainer.storagebase and tableContainer.storagebase.tableId
         if tableId then
         if tableId then
             local allSelectors = loadData('User:IanComradeBot/prototypes/AllSelector.json')
             result = result .. getTableOutput(tableId)
            local tableData = findDataById(allSelectors, tableId)
            local children = tableData and tableData['!type:AllSelector'] and tableData['!type:AllSelector'].children
 
            if children then
                for _, child in ipairs(children) do
                    result = result .. string.format('{{LinkСard|SideStyle=1|background-color=#d7d7ff0b|image=%s.png|name={{#invoke:Entity Lookup|getname|%s}}%s }}', content.id, content.id, content.amount and string.format(" [%d]", content.amount) or "", content.prob and string.format(" <div>%c</div>]", content.prob) or "")
                end
            else
                result = result .. 'Таблица не содержит элементов.'
            end
         else
         else
             result = result .. 'Таблица не найдена.'
             result = result .. 'Таблица не найдена.'
         end
         end
    else
        result = result .. ''
     end
     end


Строка 75: Строка 73:
         result = result .. '</div>'
         result = result .. '</div>'
     end
     end
    return mw.getCurrentFrame():preprocess(result)
end
-- Формирование списка химии
local function getChemOutput(data, id)
    local item = findDataById(data, id)
    if not item then return '' end
    local solutions = item.SolutionContainerManager and item.SolutionContainerManager.solutions
    if not solutions then return '' end
    local result = '<ul class="1">'
    for _, solution in pairs(solutions) do
        for _, reagent in ipairs(solution.reagents) do
            result = result .. string.format('<li>[[Химия#chem_%s|%s]] (%d ед.)</li>', reagent.ReagentId, reagent.ReagentId, reagent.Quantity)
        end
    end
    result = result .. '</ul>'
     return mw.getCurrentFrame():preprocess(result)
     return mw.getCurrentFrame():preprocess(result)
end
end