Модуль:Meals Lookup: различия между версиями
Материал из Space Station 14 Вики
Mhamster (обсуждение | вклад) Нет описания правки |
Mhamster (обсуждение | вклад) Нет описания правки |
||
Строка 44: | Строка 44: | ||
out = out .. frame:preprocess("{{Chem Recipe Component|reagent=" .. item .. "|amount=" .. amount .. "}}") | out = out .. frame:preprocess("{{Chem Recipe Component|reagent=" .. item .. "|amount=" .. amount .. "}}") | ||
end | end | ||
return out | |||
end | |||
function p.imageslist(frame) | |||
local out = "'''REQUIRED IMAGES:'''<br><br>" | |||
for cat, recipes in pairs(p.meals) do | |||
for id, recipe in pairs(recipes) do | |||
out = out .. id .. "[[File:" .. id .. ".png]]<br>" | |||
end | |||
end | |||
out = out .. "<br><hr>" | |||
return out | |||
end | |||
function p.buildeverything(frame) | |||
local out = "" | |||
out = out .. p.buildmicrowaverecipes(frame) | |||
out = out .. p.buildslicerecipes(frame) | |||
out = out .. p.buildgrindrecipes(frame) | |||
out = out .. p.buildheatrecipes(frame) | |||
out = out .. p.buildtoolmaderecipes(frame) | |||
out = out .. p.buildixablerecipes(frame) | |||
return out | return out | ||
end | end |
Версия от 17:10, 22 октября 2023
Для документации этого модуля может быть создана страница Модуль:Meals Lookup/doc
local prototypes = mw.loadData("Module:Meals Lookup/data") local chem = mw.loadData("Module:Chemistry Lookup/data") local p = {} p.meals = prototypes.meals p.chemicals = chem.react --#region universal function getrecipesfromtype(frame, type) -- should not be invoked return p.meals[type] end function getrecipe(frame, type, id) -- should not be invoked return getrecipesfromtype(frame, type)[id:gsub(' ', '')] end function getrecipetypes(frame, id) -- should not be invoked local out = {} for type, recipes in pairs(p.meals) do for recipeId, recipe in pairs(recipes) do if (recipeId:gsub(' ', '') == id:gsub(' ', '')) or (recipe["id"]:gsub(' ', '') == id:gsub(' ', '')) then table.insert(out, type) break end end end return out end function buildsolids(frame, array) -- should not be invoked local out = "" for solid, amount in pairs(array) do out = out .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. solid .. "}}|image=File:Mousegif.gif|amount=" .. amount .. "}}") end return out end function buildreagents(frame, array) -- should not be invoked local out = "" for item, amount in pairs(array) do out = out .. frame:preprocess("{{Chem Recipe Component|reagent=" .. item .. "|amount=" .. amount .. "}}") end return out end function p.imageslist(frame) local out = "'''REQUIRED IMAGES:'''<br><br>" for cat, recipes in pairs(p.meals) do for id, recipe in pairs(recipes) do out = out .. id .. "[[File:" .. id .. ".png]]<br>" end end out = out .. "<br><hr>" return out end function p.buildeverything(frame) local out = "" out = out .. p.buildmicrowaverecipes(frame) out = out .. p.buildslicerecipes(frame) out = out .. p.buildgrindrecipes(frame) out = out .. p.buildheatrecipes(frame) out = out .. p.buildtoolmaderecipes(frame) out = out .. p.buildixablerecipes(frame) return out end --#endregion --#region microwaveRecipes function getmicrowaverecipesolids(frame, recipe) -- should not be invoked local out = {} for ingredient, amount in pairs(recipe["solids"]) do out[ingredient] = amount end return out end function getmicrowaverecipereagents(frame, recipe) -- should not be invoked local out = {} for ingredient, amount in pairs(recipe["reagents"]) do out[ingredient] = amount end return out end function p.buildmicrowaverecipebox(frame) -- {{#invoke:Meals Lookup|buildmicrowaverecipebox|MicrowaveRecipeID}} local out = "" local id = frame.args[1]:gsub(' ', '') local recipe = getrecipe(frame, "microwaveRecipes", id) local solids = buildsolids(frame, getmicrowaverecipesolids(frame, recipe)) local reagents = buildreagents(frame, getmicrowaverecipereagents(frame, recipe)) out = frame:preprocess("{{Recipe Box" .. "|name={{#invoke:Entity Lookup|getname|" .. recipe["result"] .. "}}" .. "|component-1=" .. solids .. "\n" .. reagents .. "|transformer={{Recipe Transformers|microwaveRecipes|" .. recipe["time"] .. "}}" .. "|result=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["result"] .. "}}|image=File:Mousegif.gif}}") .. "}}") return out end function p.buildmicrowaverecipes(frame) local out = "" for id in pairs(getrecipesfromtype(frame, "microwaveRecipes")) do out = out .. frame:preprocess("{{#invoke:Meals Lookup|buildmicrowaverecipebox|" .. id .. "}}") .. "\n" end return out end --#endregion microwaveRecipes --#region sliceableRecipes function p.buildslicerecipebox(frame) -- {{#invoke:Meals Lookup|buildslicerecipebox|SliceableRecipeID}} local out = "" local id = frame.args[1]:gsub(' ', '') local recipe = getrecipe(frame, "sliceableRecipes", id) out = frame:preprocess("{{Recipe Box" .. "|name={{#invoke:Entity Lookup|getname|" .. recipe["result"] .. "}}" .. "|component-1=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["input"] .. "}}|image=File:Mousegif.gif}}") .. "|transformer={{Recipe Transformers|sliceableRecipes}}" .. "|result=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["result"] .. "}}|image=File:Mousegif.gif|amount=" .. recipe["count"] .. "}}") .. "}}") return out end function p.buildslicerecipes(frame) local out = "" for id in pairs(getrecipesfromtype(frame, "sliceableRecipes")) do out = out .. frame:preprocess("{{#invoke:Meals Lookup|buildslicerecipebox|" .. id .. "}}") .. "\n" end return out end --#endregion sliceableRecipes --#region grindableRecipes function p.buildgrindrecipebox(frame) -- {{#invoke:Meals Lookup|buildgrindrecipebox|SliceableRecipeID}} local out = "" local id = frame.args[1]:gsub(' ', '') local recipe = getrecipe(frame, "grindableRecipes", id) local reagents = buildreagents(frame, recipe["result"]) out = frame:preprocess("{{Recipe Box" .. "|name={{#invoke:Entity Lookup|getname|" .. recipe["id"] .. "}}" .. "|component-1=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["input"] .. "}}|image=File:Mousegif.gif}}") .. "|transformer={{Recipe Transformers|grindableRecipes}}" .. "|result=" .. reagents .. "}}") return out end function p.buildgrindrecipes(frame) local out = "" for id in pairs(getrecipesfromtype(frame, "grindableRecipes")) do out = out .. frame:preprocess("{{#invoke:Meals Lookup|buildgrindrecipebox|" .. id .. "}}") .. "\n" end return out end --#endregion grindableRecipes --#region heatableRecipes function p.buildheatrecipebox(frame) -- {{#invoke:Meals Lookup|buildheatrecipebox|SliceableRecipeID}} local out = "" local id = frame.args[1]:gsub(' ', '') local recipe = getrecipe(frame, "heatableRecipes", id) out = frame:preprocess("{{Recipe Box" .. "|name={{#invoke:Entity Lookup|getname|" .. recipe["id"] .. "}}" .. "|component-1=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["input"] .. "}}|image=File:Mousegif.gif}}") .. "|transformer={{Recipe Transformers|heatableRecipes|" .. recipe["minTemp"] .. "}}" .. "|result=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["result"] .. "}}|image=File:Mousegif.gif}}") .. "}}") return out end function p.buildheatrecipes(frame) local out = "" for id in pairs(getrecipesfromtype(frame, "heatableRecipes")) do out = out .. frame:preprocess("{{#invoke:Meals Lookup|buildheatrecipebox|" .. id .. "}}") .. "\n" end return out end --#endregion heatableRecipes --#region toolmadeRecipes function p.buildtoolmaderecipebox(frame) -- {{#invoke:Meals Lookup|buildtoolmaderecipebox|SliceableRecipeID}} local out = "" local id = frame.args[1]:gsub(' ', '') local recipe = getrecipe(frame, "toolmadeRecipes", id) local transformer = "toolmadeRecipes" .. recipe["tool"] out = frame:preprocess("{{Recipe Box" .. "|name={{#invoke:Entity Lookup|getname|" .. recipe["id"] .. "}}" .. "|component-1=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["input"] .. "}}|image=File:Mousegif.gif}}") .. "|transformer={{Recipe Transformers|" .. transformer .. "}}" .. "|result=" .. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. recipe["result"] .. "}}|image=File:Mousegif.gif}}") .. "}}") return out end function p.buildtoolmaderecipes(frame) local out = "" for id in pairs(getrecipesfromtype(frame, "toolmadeRecipes")) do out = out .. frame:preprocess("{{#invoke:Meals Lookup|buildtoolmaderecipebox|" .. id .. "}}") .. "\n" end return out end --#endregion toolmadeRecipes --#region mixableRecipes function getchemicalreagents(recipe) local out = {} for ingredient, data in pairs(recipe["reactants"]) do out[ingredient] = data["amount"] end return out end function p.buildmixablerecipebox(frame) -- {{#invoke:Meals Lookup|buildmixablerecipebox|SliceableRecipeID}} local out = "" local id = frame.args[1]:gsub(' ', '') local recipe = p.chemicals[id] local input = buildreagents(frame, getchemicalreagents(recipe)) local output = recipe["effects"][1]["Entity"] local outamount = recipe["effects"][1]["Number"] out = frame:preprocess("{{Recipe Box" .. "|name={{#invoke:Entity Lookup|getname|" .. recipe["effects"][1]["Entity"] .. "}}" .. "|component-1=" .. input .. "|transformer={{Recipe Transformers|mixableRecipes}}" .. "|result={{Recipe Component|item={{#invoke:Entity Lookup|getname|" .. output .. "}}|image=File:Mousegif.gif|amount=" .. outamount .. "}}" .. "}}") return out end function p.buildixablerecipes(frame) local out = "" for id in pairs(getrecipesfromtype(frame, "mixableRecipes")) do out = out .. frame:preprocess("{{#invoke:Meals Lookup|buildmixablerecipebox|" .. id .. "}}") .. "\n" end return out end --#endregion mixableRecipes -- tests. function p.tests(frame) local out = "" out = out .. p.buildmicrowaverecipes(frame) out = out .. p.buildslicerecipes(frame) out = out .. p.buildgrindrecipes(frame) out = out .. p.buildheatrecipes(frame) out = out .. p.buildtoolmaderecipes(frame) out = out .. p.buildixablerecipes(frame) -- out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildmicrowaverecipebox|" .. frame.args[1] .. "}}") -- out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildslicerecipebox|" .. frame.args[2] .. "}}") -- out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildgrindrecipebox|" .. frame.args[3] .. "}}") -- out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildheatrecipebox|" .. frame.args[4] .. "}}") -- out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildtoolmaderecipebox|" .. frame.args[5] .. "}}") -- out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildmixablerecipebox|" .. frame.args[6] .. "}}") return out end return p