Модуль:BotanyStats: различия между версиями
Материал из Space Station 14 Вики
Pok (обсуждение | вклад) Нет описания правки Метка: ручная отмена |
Pok (обсуждение | вклад) мНет описания правки |
||
(не показано 9 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
local p = {} | local p = {} | ||
-- Функция для установки значения по умолчанию | -- Функция для установки значения по умолчанию | ||
Строка 33: | Строка 32: | ||
local description = default(frame.args.description, "Не обладает никакими особыми свойствами") -- Описание | local description = default(frame.args.description, "Не обладает никакими особыми свойствами") -- Описание | ||
local mutationId = frame.args.mutationId -- Мутации | local mutationId = frame.args.mutationId -- Мутации | ||
local location = default(frame.args.location, "* | local location = default(frame.args.location, "* Гарантированных мест спавна нет") -- Местонахождение | ||
local mutation = frame.args.mutation -- Параметр для определения таблицы: мутаций она или обычных растений | local mutation = frame.args.mutation -- Параметр для определения таблицы: мутаций она или обычных растений | ||
Строка 71: | Строка 70: | ||
out = out .. frame:preprocess('!{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. seedId .. '.png|' .. seedId .. '|Мета=64x64px,link=}} \n') | out = out .. frame:preprocess('!{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. seedId .. '.png|' .. seedId .. '|Мета=64x64px,link=}} \n') | ||
out = out .. '|style="text-wrap:nowrap;"| \n' | out = out .. '|style="text-wrap:nowrap;"| \n' | ||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Потенция|Потенция растения, которая влияет на количество химических веществ в растении|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. potency .. '</span>' .. '</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Урожайность|Количество продуктов, которые растение дает за один урожай|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. yield .. '</span>' .. '</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Время жизни|Продолжительность жизни растения|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. lifespan .. '</span>' .. '</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Созревания|Время созревания растения|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. maturation .. '</span>' .. '</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Продуктивность|Время, необходимое для производства следующего урожая после созревания|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. production .. '</span>' .. '</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Стадии роста|Этапы роста растения, которые оно проходит от начальной стадии до полной зрелости|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. growthStages .. '</span>' .. '\n') | |||
out = out .. '|style="text-wrap:nowrap;"| \n' | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Вода|Потребления воды в секунду|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. waterConsumption .. '</span>' .. '</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Удобрения|Потребления удобрений в секунду|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. nutrientConsumption .. '</span>' .. '</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Температура|Оптимальная температура|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. string.format("%.2f", idealHeatCelsius) .. '</span>' .. '°C</dd> \n') | |||
out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Освещения|Оптимальный уровень освещения|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. idealLight .. '</span>' .. '</dd> \n') | |||
out = out .. '| ' .. description .. '\n' | out = out .. '| ' .. description .. '\n' | ||
out = out .. frame:preprocess('|' .. mutationCells .. '\n') | out = out .. frame:preprocess('|' .. mutationCells .. '\n') | ||
Строка 94: | Строка 94: | ||
out = out .. '|- \n' | out = out .. '|- \n' | ||
return out | return out | ||
end | end | ||
return p | return p |
Текущая версия от 18:14, 19 сентября 2024
Для документации этого модуля может быть создана страница Модуль:BotanyStats/doc
local p = {} -- Функция для установки значения по умолчанию local function default(value, fallback) return (value ~= nil and value ~= "") and value or fallback end -- Функция для преобразования Кельвинов в Цельсии local function kelvinToCelsius(kelvin) return kelvin - 273.15 end function p.templateCells(frame) local out = "" local anchorName = default(frame.args.anchorName, "") -- Якорь local fruitId = default(frame.args.fruitId, "") -- ID растения local seedId = default(frame.args.seedId, "") -- ID семена local potency = tonumber(default(frame.args.potency, 1)) -- Потенция local yield = tonumber(default(frame.args.yield, 0)) -- Урожайность local lifespan = tonumber(default(frame.args.lifespan, 0)) -- Время жизни local maturation = tonumber(default(frame.args.maturation, 0)) -- Созревания local production = tonumber(default(frame.args.production, 0)) -- Продуктивность local growthStages = tonumber(default(frame.args.growthStages, 6)) -- Стадии роста local waterConsumption = tonumber(default(frame.args.waterConsumption, 0.5)) -- Вода local nutrientConsumption = tonumber(default(frame.args.nutrientConsumption, 0.75)) -- Удобрения local idealHeatKelvin = tonumber(default(frame.args.idealHeat, 293)) -- Температура local idealLight = tonumber(default(frame.args.idealLight, 7)) -- Освещения local description = default(frame.args.description, "Не обладает никакими особыми свойствами") -- Описание local mutationId = frame.args.mutationId -- Мутации local location = default(frame.args.location, "* Гарантированных мест спавна нет") -- Местонахождение local mutation = frame.args.mutation -- Параметр для определения таблицы: мутаций она или обычных растений -- Разделение параметра mutationId на слова local function splitWords(text) local words = {} for word in text:gmatch("%S+") do table.insert(words, word) end return words end -- Меняем цвета в зависимости от наличия параметра `mutation` local mutationClass = (mutation == nil) and 'mutation-cell__plants' or 'mutation-cell__mutation' local mutationCells = "" if mutationId == nil then -- Если параметр отсутствует mutationCells = "" -- Не отображаем ничего для мутаций elseif mutationId == "" then -- Если параметр пуст mutationCells = '<div class="' .. mutationClass .. '" style="color:#e3fff2;">Не имеет мутаций</div> \n' else -- Если параметр задан и не пуст local words = splitWords(mutationId) for _, word in ipairs(words) do mutationCells = mutationCells .. '<div class="' .. mutationClass .. '">{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. word .. '.png|' .. word .. '|Мета=32x32px,link=}} [[#{{#invoke:Entity Lookup|getname|' .. word .. '}}|{{#invoke:Entity Lookup|getname|' .. word .. '}}]]</div>' end end -- Преобразование температуры из Кельвинов в Цельсии local idealHeatCelsius = kelvinToCelsius(idealHeatKelvin) -- Формирование строк для ячеек таблицы out = out .. frame:preprocess('!{{Anchor|' .. anchorName .. '}}{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. fruitId .. '.png|' .. fruitId .. '|Мета=64x64px,link=}}<br>{{#invoke:Entity Lookup|getname|' .. fruitId .. '}} \n') out = out .. frame:preprocess('!{{#invoke:Entity Lookup|createimagetooltip|Файл:' .. seedId .. '.png|' .. seedId .. '|Мета=64x64px,link=}} \n') out = out .. '|style="text-wrap:nowrap;"| \n' out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Потенция|Потенция растения, которая влияет на количество химических веществ в растении|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. potency .. '</span>' .. '</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Урожайность|Количество продуктов, которые растение дает за один урожай|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. yield .. '</span>' .. '</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Время жизни|Продолжительность жизни растения|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. lifespan .. '</span>' .. '</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Созревания|Время созревания растения|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. maturation .. '</span>' .. '</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Продуктивность|Время, необходимое для производства следующего урожая после созревания|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. production .. '</span>' .. '</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Стадии роста|Этапы роста растения, которые оно проходит от начальной стадии до полной зрелости|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. growthStages .. '</span>' .. '\n') out = out .. '|style="text-wrap:nowrap;"| \n' out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Вода|Потребления воды в секунду|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. waterConsumption .. '</span>' .. '</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Удобрения|Потребления удобрений в секунду|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. nutrientConsumption .. '</span>' .. '</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Температура|Оптимальная температура|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. string.format("%.2f", idealHeatCelsius) .. '</span>' .. '°C</dd> \n') out = out .. frame:preprocess('<dd style="font-size: 0.9em;">{{AltTooltip|Освещения|Оптимальный уровень освещения|font-weight=500}}: ' .. '<span style="font-weight: 500">' .. idealLight .. '</span>' .. '</dd> \n') out = out .. '| ' .. description .. '\n' out = out .. frame:preprocess('|' .. mutationCells .. '\n') -- Меняем цвета в зависимости от наличия параметра `mutation` if mutation == nil then out = out .. frame:preprocess('|{{SlideMenu|overlay|color=#e3fff2|background-color=#0b6b3f|border-color=#074d2f|border-size=3px|title=Список|content=<p></p> \n' .. location .. '}} \n') else out = out .. frame:preprocess('|{{SlideMenu|overlay|color=#e3fff2|background-color=#301453|border-color=#211235|border-size=3px|title=Список|content=<p></p> \n' .. location .. '}} \n') end out = out .. '|- \n' return out end return p