Модуль:RecipeUtils: различия между версиями
Материал из Eco - Русская Wiki
| [досмотренная версия] | [досмотренная версия] |
StalEF (обсуждение | вклад) Нет описания правки |
StalEF (обсуждение | вклад) Нет описания правки |
||
| Строка 1: | Строка 1: | ||
local Utils = require('Module:Utils') | local Utils = require('Module:Utils') | ||
local IconUtils = require('Module:IconUtils') | |||
local RecipesData = require('Module:RecipeData') | local RecipesData = require('Module:RecipeData') | ||
local ItemsData = require('Module:ItemData') | local ItemsData = require('Module:ItemData') | ||
local TagsData = require('Module:TagData') | |||
local Lang = Utils.getLanguageName() | |||
local p = {} | local p = {} | ||
| Строка 45: | Строка 48: | ||
if (RecipeList ~= "") then | if (RecipeList ~= "") then | ||
CraftTable = CraftTable .. '<table class="table table-striped table-bordered"><tr class="thead-dark"><th> | CraftTable = CraftTable .. '<table class="table table-striped table-bordered sortable"><tr class="thead-dark">'; | ||
CraftTable = CraftTable .. '<th>Crafting Station</th><th class="unsortable">Products</th><th class="unsortable">Ingredients</th><th data-sort-type="time">Time</th><th>Labor</th><th>Skill</th><th>Experience</th></tr>'; | |||
for RecipeName in string.gmatch(RecipeList, "([^,]+)") do | for RecipeName in string.gmatch(RecipeList, "([^,]+)") do | ||
local CraftTableRow = ""; | local CraftTableRow = ""; | ||
local RecipeData = RecipesData.recipes[RecipeName]; | local RecipeData = RecipesData.recipes[RecipeName]; | ||
CraftTableRow = "<td>" .. | local CraftTableData = ItemsData.items[RecipeData.CraftingTables] | ||
CraftTableRow = "<td>" .. IconUtils.main{ name = CraftTableData.Name[Lang], id = CraftTableData.ID, size = 48, style = 2, link = CraftTableData.Name[Lang] } .. "</td>"; | |||
local RecipeProducts = ""; | local RecipeProducts = ""; | ||
for ProductName,ProductData in pairs(RecipeData.Products) do | for ProductName,ProductData in pairs(RecipeData.Products) do | ||
RecipeProducts = RecipeProducts .. ProductName | RecipeProducts = RecipeProducts .. ProductName; | ||
end | end | ||
CraftTableRow = CraftTableRow .. "<td>" .. RecipeProducts .. "</td>"; | CraftTableRow = CraftTableRow .. "<td>" .. RecipeProducts .. "</td>"; | ||
| Строка 59: | Строка 65: | ||
local RecipeIngredients = ""; | local RecipeIngredients = ""; | ||
for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do | for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do | ||
RecipeIngredients = RecipeIngredients .. IngredientName | RecipeIngredients = RecipeIngredients .. IngredientName; | ||
end | end | ||
CraftTableRow = CraftTableRow .. "<td>" .. RecipeIngredients .. "</td>"; | CraftTableRow = CraftTableRow .. "<td>" .. RecipeIngredients .. "</td>"; | ||
local CraftTime = tonumber(RecipeData.CraftTime) | |||
CraftTableRow = CraftTableRow .. "<td>" .. p.CraftTime(CraftTime) .. "</td>"; | |||
CraftTableRow = CraftTableRow .. "<td>" .. RecipeData.LaborInCalories .. "</td>"; | |||
CraftTableRow = CraftTableRow .. "<td>" .. "Skill" .. "</td>"; | |||
CraftTableRow = CraftTableRow .. "<td>" .. RecipeData.ExperienceOnCraft .. "</td>"; | |||
CraftTable = CraftTable .. "<tr>" ..CraftTableRow .. "</tr>"; | CraftTable = CraftTable .. "<tr>" ..CraftTableRow .. "</tr>"; | ||
| Строка 74: | Строка 86: | ||
local Minutes = 0; | local Minutes = 0; | ||
local Seconds = 0; | local Seconds = 0; | ||
if (TimeInSeconds >= 60) then Minutes = math.floor( | if (TimeInSeconds >= 60) then Minutes = math.floor(TimeInSeconds / 60); Seconds = TimeInSeconds - Minutes * 60; else Seconds = TimeInSeconds; end | ||
if (Minutes | if (Minutes <10) then CraftTime = "0" .. Minutes .. ":" else CraftTime = Minutes .. ":" end | ||
CraftTime = CraftTime .. | if (Seconds < 10) then CraftTime = CraftTime .. "0" end | ||
CraftTime = CraftTime .. Seconds; | |||
return CraftTime | return CraftTime | ||
end | end | ||
return p | return p | ||
Версия от 19:15, 30 августа 2025
Для документации этого модуля может быть создана страница Модуль:RecipeUtils/doc
local Utils = require('Module:Utils')
local IconUtils = require('Module:IconUtils')
local RecipesData = require('Module:RecipeData')
local ItemsData = require('Module:ItemData')
local TagsData = require('Module:TagData')
local Lang = Utils.getLanguageName()
local p = {}
function p.ItemCraft(ItemName)
local Recipes = ""
for RecipeName,RecipeData in pairs(RecipesData.recipes) do
for ProductName,ProductData in pairs(RecipeData.Products) do
if ProductName == ItemName and ProductData.Type == "ITEM" then
if (Recipes == "") then Recipes = Recipes .. RecipeName else Recipes = Recipes .. "," .. RecipeName end
end
end
end
return Recipes
end
function p.TagIngredient(TagName)
local Recipes = ""
for RecipeName,RecipeData in pairs(RecipesData.recipes) do
for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do
if IngredientName == TagName and IngredientData.Type == "TAG" then
if (Recipes == "") then Recipes = Recipes .. RecipeName else Recipes = Recipes .. "," .. RecipeName end
end
end
end
return Recipes
end
function p.ItemIngredient(ItemName)
local Recipes = ""
for RecipeName,RecipeData in pairs(RecipesData.recipes) do
for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do
if IngredientName == ItemName and IngredientData.Type == "ITEM" then
if (Recipes == "") then Recipes = Recipes .. RecipeName else Recipes = Recipes .. "," .. RecipeName end
end
end
end
return Recipes
end
function p.CraftTable(RecipeList)
local CraftTable = ""
if (RecipeList ~= "") then
CraftTable = CraftTable .. '<table class="table table-striped table-bordered sortable"><tr class="thead-dark">';
CraftTable = CraftTable .. '<th>Crafting Station</th><th class="unsortable">Products</th><th class="unsortable">Ingredients</th><th data-sort-type="time">Time</th><th>Labor</th><th>Skill</th><th>Experience</th></tr>';
for RecipeName in string.gmatch(RecipeList, "([^,]+)") do
local CraftTableRow = "";
local RecipeData = RecipesData.recipes[RecipeName];
local CraftTableData = ItemsData.items[RecipeData.CraftingTables]
CraftTableRow = "<td>" .. IconUtils.main{ name = CraftTableData.Name[Lang], id = CraftTableData.ID, size = 48, style = 2, link = CraftTableData.Name[Lang] } .. "</td>";
local RecipeProducts = "";
for ProductName,ProductData in pairs(RecipeData.Products) do
RecipeProducts = RecipeProducts .. ProductName;
end
CraftTableRow = CraftTableRow .. "<td>" .. RecipeProducts .. "</td>";
local RecipeIngredients = "";
for IngredientName,IngredientData in pairs(RecipeData.Ingredients) do
RecipeIngredients = RecipeIngredients .. IngredientName;
end
CraftTableRow = CraftTableRow .. "<td>" .. RecipeIngredients .. "</td>";
local CraftTime = tonumber(RecipeData.CraftTime)
CraftTableRow = CraftTableRow .. "<td>" .. p.CraftTime(CraftTime) .. "</td>";
CraftTableRow = CraftTableRow .. "<td>" .. RecipeData.LaborInCalories .. "</td>";
CraftTableRow = CraftTableRow .. "<td>" .. "Skill" .. "</td>";
CraftTableRow = CraftTableRow .. "<td>" .. RecipeData.ExperienceOnCraft .. "</td>";
CraftTable = CraftTable .. "<tr>" ..CraftTableRow .. "</tr>";
end
CraftTable = CraftTable .. "</table>";
end
return CraftTable
end
function p.CraftTime(TimeInSeconds)
local CraftTime = "";
local Minutes = 0;
local Seconds = 0;
if (TimeInSeconds >= 60) then Minutes = math.floor(TimeInSeconds / 60); Seconds = TimeInSeconds - Minutes * 60; else Seconds = TimeInSeconds; end
if (Minutes <10) then CraftTime = "0" .. Minutes .. ":" else CraftTime = Minutes .. ":" end
if (Seconds < 10) then CraftTime = CraftTime .. "0" end
CraftTime = CraftTime .. Seconds;
return CraftTime
end
return p