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

Материал из Space Stories Wiki
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
local p = {}
local p = {}


local darkColors = {
local recipesData = {
     border = "#338833",
     {
     bg = "#1a2a1a",
        title = "Иодид калия",
     border2 = "#cc7744",
        materials = {"Йод [1]", "Калий [1]"},
     bg2 = "#2a1a12",
        result = "Иодид калия [2]",
    border3 = "#2277cc",
        effects = "Medicine (0.5 единиц в секунду). Наносит 2 Toxin за единицу, когда больше чем 20ед. Вызывает защиту от радиации минимум на 2 секунды, эффект накапливается. Снижает разрушительное воздействие радиации на 90%. Используется только в профилактических целях. На вид зернистое."
    bg3 = "#121a26"
     },
    {
        title = "Амбузол",
        materials = {"Диловен [1]", "Аммиак [1]", "Кровь зомби [2]"},
        result = "Амбузол [4]",
        effects = "Medicine (0.5 единиц в секунду). Лечит зомби-вирус, когда больше чем 10ед. Высокотехнологичный препарат, способный остановить развитие зомби-вируса. На вид хрустящее."
    },
     {
        title = "Сидерлак",
        materials = {"Стеллибинин [1]", "Алоэ [1]"},
        result = "Сидерлак [2]",
        effects = "Medicine (0.5 единиц в секунду). Лечит 10 Caustic за единицу. Мощное противокоррозийное средство, получаемое из растений. На вид молочное."
    },
     {
        title = "Когнизин",
        materials = {"Карпотоксин [1]", "Ацетон [1]", "Сидерлак [1]"},
        result = "Когнизин [1]",
        effects = "Medicine (0.5 единиц в секунду). Делает употребившего разумным, когда больше чем 5ед. Таинственное химическое вещество, способное сделать любое неразумное существо разумным. На вид загадочное."
    }
}
}


local function renderIngredients(ingredients)
function p.renderRecipes()
     local parts = {}
     local html = mw.html.create('div')
    for _, item in ipairs(ingredients) do
        :addClass('alchemy-recipes-grid')
        table.insert(parts, mw.html.create("div"):wikitext(item):allDone())
    end
    return table.concat(parts, "\n")
end


local function renderEffect(text)
    for _, recipe in ipairs(recipesData) do
    return mw.html.create("div"):addClass("alchemy-effect"):wikitext(text):allDone()
        local card = html:tag('div'):addClass('alchemy-recipe-card')
end


local function renderRecipe(text)
        card:tag('div'):addClass('alchemy-recipe-title'):wikitext(recipe.title)
    return mw.html.create("div"):addClass("alchemy-recipe-block"):wikitext(text):allDone()
end


function p.main(frame)
        local recipeBlock = card:tag('div'):addClass('alchemy-recipe-block')
    local args = frame:getParent().args


    local ingredients = {}
        local materialsDiv = recipeBlock:tag('div'):addClass('alchemy-recipe-materials')
    for k,v in pairs(args) do
        for _, material in ipairs(recipe.materials) do
        if k:match("^ingredient%d*$") then
            materialsDiv:tag('div'):wikitext(material)
            table.insert(ingredients, v)
         end
         end
    end
    local result = args.result or "?"
    local effect = args.effect or ""
    local recipe = args.recipe or ""
    local html = mw.html.create("div")
        :addClass("alchemy-card")


    local content = mw.html.create("div")
        recipeBlock:tag('div'):addClass('alchemy-recipe-mix'):wikitext('Смешайте')
        :addClass("alchemy-content")
        :css("display", "flex")
        :css("justify-content", "center")
        :css("align-items", "center")


    -- Левая колонка: ингредиенты вертикально
        recipeBlock:tag('div'):addClass('alchemy-recipe-result'):wikitext(recipe.result)
    local left = mw.html.create("div")
        :addClass("alchemy-ingredients")
        :css("display", "flex")
        :css("flex-direction", "column")
        :css("gap", "6px")
        :css("min-width", "150px")
        :wikitext(renderIngredients(ingredients))


    -- Центр: слово Смешайте
         card:tag('div'):addClass('alchemy-recipe-effects-title'):wikitext('Эффекты')
    local center = mw.html.create("div")
         card:tag('div'):addClass('alchemy-recipe-effects'):wikitext(recipe.effects)
        :addClass("alchemy-mix")
         :css("margin", "0 20px")
        :css("font-weight", "bold")
        :css("color", darkColors.border)
        :wikitext("Смешайте")
 
    -- Правая колонка: результат
    local right = mw.html.create("div")
        :addClass("alchemy-result")
        :css("display", "flex")
        :css("flex-direction", "column")
        :css("gap", "10px")
 
    right:node(mw.html.create("div"):addClass("alchemy-result-name"):wikitext(result))
 
    if effect ~= "" then
         right:node(mw.html.create("div"):addClass("alchemy-effect-block"):wikitext(effect))
     end
     end
    if recipe ~= "" then
        right:node(mw.html.create("div"):addClass("alchemy-recipe-block"):wikitext(recipe))
    end
    content
        :node(left)
        :node(center)
        :node(right)
    html
        :node(content)


     return tostring(html)
     return tostring(html)

Версия от 18:32, 16 мая 2025

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

local p = {}

local recipesData = {
    {
        title = "Иодид калия",
        materials = {"Йод [1]", "Калий [1]"},
        result = "Иодид калия [2]",
        effects = "Medicine (0.5 единиц в секунду). Наносит 2 Toxin за единицу, когда больше чем 20ед. Вызывает защиту от радиации минимум на 2 секунды, эффект накапливается. Снижает разрушительное воздействие радиации на 90%. Используется только в профилактических целях. На вид зернистое."
    },
    {
        title = "Амбузол",
        materials = {"Диловен [1]", "Аммиак [1]", "Кровь зомби [2]"},
        result = "Амбузол [4]",
        effects = "Medicine (0.5 единиц в секунду). Лечит зомби-вирус, когда больше чем 10ед. Высокотехнологичный препарат, способный остановить развитие зомби-вируса. На вид хрустящее."
    },
    {
        title = "Сидерлак",
        materials = {"Стеллибинин [1]", "Алоэ [1]"},
        result = "Сидерлак [2]",
        effects = "Medicine (0.5 единиц в секунду). Лечит 10 Caustic за единицу. Мощное противокоррозийное средство, получаемое из растений. На вид молочное."
    },
    {
        title = "Когнизин",
        materials = {"Карпотоксин [1]", "Ацетон [1]", "Сидерлак [1]"},
        result = "Когнизин [1]",
        effects = "Medicine (0.5 единиц в секунду). Делает употребившего разумным, когда больше чем 5ед. Таинственное химическое вещество, способное сделать любое неразумное существо разумным. На вид загадочное."
    }
}

function p.renderRecipes()
    local html = mw.html.create('div')
        :addClass('alchemy-recipes-grid')

    for _, recipe in ipairs(recipesData) do
        local card = html:tag('div'):addClass('alchemy-recipe-card')

        card:tag('div'):addClass('alchemy-recipe-title'):wikitext(recipe.title)

        local recipeBlock = card:tag('div'):addClass('alchemy-recipe-block')

        local materialsDiv = recipeBlock:tag('div'):addClass('alchemy-recipe-materials')
        for _, material in ipairs(recipe.materials) do
            materialsDiv:tag('div'):wikitext(material)
        end

        recipeBlock:tag('div'):addClass('alchemy-recipe-mix'):wikitext('Смешайте')

        recipeBlock:tag('div'):addClass('alchemy-recipe-result'):wikitext(recipe.result)

        card:tag('div'):addClass('alchemy-recipe-effects-title'):wikitext('Эффекты')
        card:tag('div'):addClass('alchemy-recipe-effects'):wikitext(recipe.effects)
    end

    return tostring(html)
end

return p