Модуль:Meals Lookup: различия между версиями
Материал из Space Station 14 Вики
Mhamster (обсуждение | вклад) (toolmade) |
Mhamster (обсуждение | вклад) (mixablerecipes) |
||
Строка 1: | Строка 1: | ||
local prototypes = mw.loadData("Module:Meals Lookup/data") | local prototypes = mw.loadData("Module:Meals Lookup/data") | ||
local | local chemicals = mw.loadData("Module:Chemistry Lookup/data").react | ||
local p = {} | local p = {} | ||
Строка 6: | Строка 6: | ||
--#region universal | --#region universal | ||
function getrecipesfromtype(frame, type) -- should not be invoked | function getrecipesfromtype(frame, type) -- should not be invoked | ||
return p.meals[type] | return p.meals[type] | ||
Строка 46: | Строка 47: | ||
--#region microwaveRecipes | --#region microwaveRecipes | ||
function getmicrowaverecipesolids(frame, recipe) -- should not be invoked | function getmicrowaverecipesolids(frame, recipe) -- should not be invoked | ||
local out = {} | local out = {} | ||
Строка 131: | Строка 133: | ||
--#endregion heatableRecipes | --#endregion heatableRecipes | ||
--#region | --#region toolmadeRecipes | ||
function p.buildtoolmaderecipebox(frame) -- {{#invoke:Meals Lookup|buildtoolmaderecipebox|SliceableRecipeID}} | function p.buildtoolmaderecipebox(frame) -- {{#invoke:Meals Lookup|buildtoolmaderecipebox|SliceableRecipeID}} | ||
Строка 147: | Строка 149: | ||
end | end | ||
--#endregion | --#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 = chemicals[id] | |||
local input = buildreagents(frame, getchemicalreagents(recipe)) | |||
local output = recipe["effects"]["Entity"] | |||
local outamount = recipe["effects"]["Number"] | |||
out = frame:preprocess("{{Recipe Box" .. | |||
"| name = " .. | |||
"| component-1 = " .. input .. | |||
"|transformer={{Recipe Transformers|mixableRecipes}}".. | |||
"|result=".. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|".. output .."}}|image=File:Mousegif.gif|amount=".. outamount ).. | |||
"}}") | |||
-- 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 | |||
--#endregion mixableRecipes | |||
Строка 158: | Строка 194: | ||
out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildheatrecipebox|".. frame.args[4] .. "}}") | 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|buildtoolmaderecipebox|".. frame.args[5] .. "}}") | ||
out = out .. "\n" .. frame:preprocess("{{#invoke:Meals Lookup|buildmixablerecipebox|".. frame.args[6] .. "}}") | |||
return out | return out | ||
end | end | ||
return p | return p |
Версия от 09:37, 22 октября 2023
Для документации этого модуля может быть создана страница Модуль:Meals Lookup/doc
local prototypes = mw.loadData("Module:Meals Lookup/data") local chemicals = mw.loadData("Module:Chemistry Lookup/data").react local p = {} p.meals = prototypes.meals --#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.."|1}}}}}" ) end 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 --#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 --#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 --#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 --#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 --#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 = chemicals[id] local input = buildreagents(frame, getchemicalreagents(recipe)) local output = recipe["effects"]["Entity"] local outamount = recipe["effects"]["Number"] out = frame:preprocess("{{Recipe Box" .. "| name = " .. "| component-1 = " .. input .. "|transformer={{Recipe Transformers|mixableRecipes}}".. "|result=".. frame:preprocess("{{Recipe Component|item={{#invoke:Entity Lookup|getname|".. output .."}}|image=File:Mousegif.gif|amount=".. outamount ).. "}}") -- 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 --#endregion mixableRecipes -- tests. function p.tests(frame) local out = "" 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