Bearbeiten von „Modul:RecipeTable

Aus Eco - Deutsches Wiki
Wechseln zu:Navigation, Suche

Deine Änderungen werden angezeigt, sobald ein dazu berechtigter Benutzer sie akzeptiert hat. (Hilfe)

Warnung: Du bist nicht angemeldet. Deine IP-Adresse wird bei Bearbeitungen öffentlich sichtbar. Melde dich an oder erstelle ein Benutzerkonto, damit Bearbeitungen deinem Benutzernamen zugeordnet werden. Ein eigenes Benutzerkonto hat eine ganze Reihe von Vorteilen.

Die Bearbeitung kann rückgängig gemacht werden. Bitte prüfe den Vergleich unten, um sicherzustellen, dass du dies tun möchtest, und veröffentliche dann unten deine Änderungen, um die Bearbeitung rückgängig zu machen.

Aktuelle Version Dein Text
Zeile 1: Zeile 1:
-- Module:RecipeTable https://wiki.play.eco/en/Module:RecipeTable
local p = {}
local p = {}
local Utils = require("Module:Utils")
local L = require("Module:Localization")


-- Header for the wikitable
-- Header for the wikitable
function header(args)
function header( args )
     local headerStr = '{| class=\"wikitable mw-collapsible\" style=\"text-align: center;\"\n|-\n'
     local headerStr = '{| class=\"wikitable mw-collapsible\" style=\"text-align: center;\"\n|-\n'


     -- Show or hide the Crafting Station column
     -- Show or hide the Crafting Station column
     if args[1] == '1' then
     if args[1] == '1' then
         headerStr = headerStr .. '! ' .. L.t('Crafting Station') .. ' !'
         headerStr = headerStr .. '! Crafting Station !'
     end
     end
    -- Item, Level Needed, Materials, Crafting Time, Labour Cost and XP Gained Specialty
-- Item, Level Needed, Materials, Crafting Time, Labour Cost and XP Gained Specialty
    headerStr = headerStr .. '! colspan=\"4\" | ' .. L.t('Item') .. ' !! colspan=\"4\" | ' .. L.t('Materials') .. ' !! ' .. L.t('Level Needed') .. ' !! ' .. L.t('Crafting Time<br>(mins)') .. ' !! ' .. L.t('Labour Cost') .. ' || ' .. L.t('XP Gained') .. ' !!\n'
    headerStr = headerStr .. '! colspan=\"4\" | Item !! colspan=\"4\" | Materials !! Level Needed !! Crafting Time <br>(mins) !! Labour Cost || XP Gained !!\n'
     return headerStr
     return headerStr
end
end


function imagedisp(name, nameEN, style, borderColour)
function imagedisp( name )
     local borderImageClass = ''
     local str = ''
     local icon
     local image
     if borderColour == 'green' then
    -- Manual override for image file
         borderImageClass = ' borderGreen'
     if name then
    elseif borderColour == 'yellow' then
         image = string.gsub(name, ' ', '') .. '_Icon.png'
        borderImageClass = ' borderYellow'
else
    end
image = 'NoImage.png'
 
end
    local iconBG
str = str .. '<div class="iconContainer" style="width:64px; height:64px"><div class="iconStack">[[File:' .. image .. '|frameless|class=iconRecipe|link=' .. name ..']]</div><div class="iconBorder" style=\"position:absolute;\"></div></div>\n[[' .. name .. ']]'
    if style == 'tag' then
return str
        iconBG = 'iconGrey'
end
        icon = L.tag(name) .. 'Tag'
        name = L.t('%s Tag'):format(name)
    elseif style == 'skill' then
        iconBG = 'iconBrightBlue'
        icon = nameEN
    end
 
    if not icon then
        icon = name
    end


    return Utils.build_icon(icon, name, 'iconRecipe', iconBG, borderImageClass, true) .. '\n[[' .. name .. ']]'
function stationcell( args )
  local str = ''
str = str .. '| ' .. imagedisp(args[1])
return str
end
end


function stationcell(args)
    local str = ''
    str = str .. '| ' .. imagedisp(args[1], args[2])
    return str
end


function itemcell(args)
function itemcell( args )
     local str = ''
     local str = ''
    str = str .. '| ' .. imagedisp(args[1], args[3])
str = str .. '| ' .. imagedisp(args[1])
    str = str .. '<br>x' .. args[2] .. '\n'
str = str .. '<br>x' .. args[2] .. '\n'
    return str
return str
end
end


function ingredientcell(args)
function skillreqcell( args )
     local str = ''
     local str = ''
    local borderColour
str = str .. '| ' .. imagedisp(args[1])
    if args[4] == 'False' then
str = str .. '<br> Level ' .. args[2] .. ' \n'
        borderColour = 'green'
return str
    elseif args[4] == 'True' then
        borderColour = 'yellow'
    end
    if args[1] == 'TAG' then
        style = 'tag'
    else
        style = nil
    end
    return str .. '| ' .. imagedisp(args[2], args[5], style, borderColour) .. '<br>x' .. args[3] .. '\n'
end
end


function skillreqcell(args)
function groupedskillcell( args )
     local str = ''
     local str = ''
    str = str .. '| ' .. imagedisp(args[1], args[3], 'skill')
str = str .. '| ' .. imagedisp(args[1])
    str = str .. '<br> ' .. L.t('Level') .. ' ' .. args[2] .. ' \n'
if args[2] ~= nil then
    return str
str = str .. ' <br> ' .. imagedisp(args[2])
end
return str
end
end
-- Does this even exist anymore?
--function groupedskillcell( args )
--    local str = ''
-- str = str .. '| ' .. imagedisp(args[1],args[3])
-- if args[2] ~= nil then
-- str = str .. ' <br> ' .. imagedisp(args[2])
-- end
-- return str
--end


-- Create a wikitable of recipes
-- Create a wikitable of recipes
function p.main(recipes)
function p.main( recipes )
     local rows = ''
     local rows = ''
 
    --Not relevant for v0.9
    -- find number of times each Affect by Skill occurs
    --local prevSkill = recipes[1].efficiencySkills[1]
    --local skillIndex = {}
    --local prevSkillnum = 0
--local count = 0
    --for num = 1, #recipes do
--if prevSkill ~= recipes[num].efficiencySkills[1] then
--skillIndex[#skillIndex + 1] = prevSkillnum + count
--prevSkillnum = 1
--if #recipes[num].ingredients > 4 then
--count = 1
--else
--count = 0
--end
--prevSkill = recipes[num].efficiencySkills[1]
--else
--prevSkillnum = prevSkillnum + 1
--if #recipes[num].ingredients > 4 then
--count = count + 1
--end
--end
    --end
    --skillIndex[#skillIndex + 1] = prevSkillnum + count
     -- Get each row
     -- Get each row
    local j = 0
    local k = 1
     for i = 1, #recipes do
     for i = 1, #recipes do
        -- get information from the current recipe for building
        local checkImage = recipes[i].checkImage
        local craftStn = recipes[i].craftStn
        local skillNeeds = recipes[i].skillNeeds
        --use last variant as this is always the default variant
        local numberOfVariants = recipes[i].numberOfVariants
        local products = {}
        local ingredients = {}
        --loop through variants to select default variant ingredients
if numberOfVariants == 1 then
            ingredients = recipes[i].variants[1].ingredients
            products = recipes[i].variants[1].products
        else
        --loop through variants to select default variant ingredients
            for k, v in pairs(recipes[i].variants) do       
                --given pairs doesn't guarantee order, check that product matches default variant
                if k == recipes[i].defaultVariant then
                    ingredients = v.ingredients
                    products = v.products
                end
            end
        end
        local baseCraftTime = recipes[i].baseCraftTime
        local baseLaborCost = recipes[i].baseLaborCost
        local baseXPGain = recipes[i].baseXPGain
        -- determine the size needed for products to display correctly
        local ingrednum = #ingredients
        local rowspan = '|'
        local rowspanProducts = '|'
        --Code to incorporate rowspan for ingrediants and variants here
        local rowspanCount = 0
        --accomodate both variants and multiple ingredients
        if ingrednum > 4 then
            rowspanCount = rowspanCount + 2
        end
        --suspect there will be a bug here for many variants & many ingredients - might need x2 multipler per variant.
        if (#recipes == 1) then
            --only add variant rowspans if there is one recipe (i.e. variants will be displayed)
            if tonumber(recipes[i].numberOfVariants) > 1 then
                rowspanCount = rowspanCount + tonumber(recipes[i].numberOfVariants)
                rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
            end
        end
        if rowspanCount > 0 then
            rowspan = '| rowspan=\"' .. rowspanCount .. '\" '
            if (#recipes > 1) then
                rowspanProducts = '| rowspan=\"' .. rowspanCount .. '\" '
            else
                rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
            end
        end
        -- String to return
        local row = '|-\n'
        -- Add new row if products or ingredients are passed in with at least 1 item
        if (products[1] and ingredients[1]) then
            -- Show or hide the Crafting Station column
            if recipes[i].dispCraftStn == '1' then
                row = row .. rowspan .. stationcell({ craftStn[1][1], craftStn[1][2] }) .. '\n'
            end
            -- Add the products columns
            local prodnum = #products
            for a = 1, prodnum do
                if prodnum == 1 then
                    row = row .. rowspanProducts .. ' colspan=\"4\" '
                end
                if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
                    row = row .. rowspanProducts .. ' colspan=\"2\" '
                end
                row = row .. itemcell({ products[a][1], products[a][2], products[a][3] })
                if (tonumber(numberOfVariants) > 1) then
                    row = row .. '<i>' .. L.t('Has Variants') .. '</i> \n'
                end
            end
            -- Add the FIRST row of Ingredients column
            local numing = ingrednum
            if ingrednum > 4 then
                numing = 4
            end
            for b = 1, numing do
                if (ingrednum == 1) then
                    row = row .. '| colspan=\"4\" '
                end
                if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
                    row = row .. '| colspan=\"2\" '
                end
                row = row .. ingredientcell(ingredients[b])
            end
            -- Add the Skill needed column
            if (skillNeeds[1] ~= '' and skillNeeds[1] ~= nil) then
                row = row .. rowspan .. skillreqcell({ skillNeeds[1][1], skillNeeds[1][2], skillNeeds[1][3] })
            else
                row = row .. rowspan
                if ingrednum > 4 then
                    row = row .. '|'
                end
                row = row .. ' \'\'' .. L.t('None') .. '\'\' \n'
            end
            -- Add the Crafting time column
            row = row .. rowspan
            if rowspanCount > 1 then
                row = row .. '|'
            end
            if baseCraftTime then
                row = row .. baseCraftTime .. '\n'
            else
                row = row .. rowspan .. ' \'\'' .. L.t('Missing') .. '\'\' \n'
            end
            -- Add the Labour time column
            row = row .. rowspan
            if rowspanCount > 1 then
                row = row .. '|'
            end
            if baseLaborCost then
                row = row .. baseLaborCost .. '\n'
            else
                row = row .. rowspan .. ' \'\'' .. L.t('Missing') .. '\'\' \n'
            end
            -- Add the XP gain column
            row = row .. rowspan
            if rowspanCount > 1 then
                row = row .. '|'
            end
            if baseXPGain then
                row = row .. baseXPGain .. '\n'
            else


                row = row .. rowspan .. ' \'\'' .. L.t('Missing') .. '\'\' \n'
-- get information from the current recipe for building
            end
local checkImage = recipes[i].checkImage
local craftStn = recipes[i].craftStn
local skillNeeds = recipes[i].skillNeeds
--use last variant as this is always the default variant
local numberOfVariants = recipes[i].numberOfVariants
local products = {{'',''}}
local ingredients = {{'',''}}
--loop through variants to select default variant ingredients
for k, v in pairs(recipes[i].variants) do
--given pairs doesn't guarantee order, check that product matches default variant
if v.products[1][1] == recipes[i].defaultVariant then
ingredients = v.ingredients
products = v.products
else
--handle scenarios where product ~= default variant (for example Refine Tallow)
ingredients = v.ingredients
products = v.products
end
end
local baseCraftTime = recipes[i].baseCraftTime
local baseLaborCost = recipes[i].baseLaborCost
local baseXPGain = recipes[i].baseXPGain
-- determine the size needed for products to display correctly
local ingrednum = #ingredients
local rowspan = '|'
local rowspanProducts = '|'
--Code to incorporate rowspan for ingrediants and variants here
local rowspanCount = 0


            -- Add the SECOND row of ingredients to ingredients column if applicable
--accomodate both variants and multiple ingredients
            if ingrednum > 4 then
                row = row .. '|-\n'
if ingrednum > 4 then
                for b = 5, ingrednum do
rowspanCount = rowspanCount + 2
                    if (ingrednum == 5) then
end
                        row = row .. '| colspan=\"4\" '
--suspect there will be a bug here for many variants & many ingredients - might need x2 multipler per variant.
                    end
if(#recipes == 1) then --only add variant rowspans if there is one recipe (i.e. variants will be displayed)
                    if ((ingrednum == 6) or (ingrednum == 7 and b == 6)) then
if tonumber(recipes[i].numberOfVariants) > 1 then
                        row = row .. '| colspan=\"2\" '
rowspanCount = rowspanCount + tonumber(recipes[i].numberOfVariants)
                    end
rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
                    row = row .. ingredientcell(ingredients[b])
end
                end
end
            end
if rowspanCount > 0 then
rowspan = '| rowspan=\"' .. rowspanCount .. '\" '
if(#recipes > 1) then
rowspanProducts = '| rowspan=\"' .. rowspanCount .. '\" '
else
rowspanProducts = '| rowspan=\"' .. rowspanCount - recipes[i].numberOfVariants - 1 .. '\" '
end
end


            rows = rows .. row
        end
--original rowspan working
--if ingrednum > 4 then
-- rowspan = '| rowspan=\"2\" '
--end
-- String to return
local row = '|-\n'
-- Add new row if products or ingredients are passed in with at least 1 item
if (products[1] and ingredients[1]) then
     
-- Show or hide the Crafting Station column
if recipes[i].dispCraftStn == '1' then
row = row .. rowspan .. stationcell({craftStn[1]}) .. '\n'
end
       
-- Add the products columns
local prodnum = #products
for a = 1, prodnum do
if prodnum == 1 then
row = row .. rowspanProducts .. ' colspan=\"4\" '
end
if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
row = row .. rowspanProducts .. ' colspan=\"2\" '
end
row = row .. itemcell({products[a][1], products[a][2]})
end
-- Add the FIRST row of Ingredients column
local numing = ingrednum
if ingrednum > 4 then
numing = 4
end
for b = 1, numing do
if (ingrednum == 1) then
row = row .. '| colspan=\"4\" '
end
if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
row = row .. '| colspan=\"2\" '
end
row = row .. itemcell({ingredients[b][2], ingredients[b][3]})
end


        --Show variants in table if only 1 recipe in list
-- Add the Skill needed column
        if (#recipes == 1 and tonumber(recipes[i].numberOfVariants) > 1) then
if (skillNeeds[1] ~= '' and skillNeeds[1] ~= nil) then
            for k, v in pairs(recipes[i].variants) do
row = row .. rowspan .. skillreqcell({skillNeeds[1][1], skillNeeds[1][2]})
                --start new row for variants
else
                row = '|-\n'
row = row .. rowspan
                --Skip default variant
if ingrednum > 4 then
                if v.products[1][1] ~= recipes[i].defaultVariant then
row = row .. '|'
                    local prodnum = #products
end
                    for a = 1, prodnum do
row = row .. ' \'\'None\'\' \n'
                        if prodnum == 1 then
end
                            row = row .. rowspanProducts .. ' colspan=\"4\" '
                        end
-- Add the Crafting time column
                        if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
row = row .. rowspan
                            row = row .. rowspanProducts .. ' colspan=\"2\" '
if rowspanCount > 1 then
                        end
row = row .. '|'
                        row = row .. itemcell({ v.products[a][1], v.products[a][2], v.products[a][3] })
end
                    end
if baseCraftTime then
row = row .. baseCraftTime .. '\n'
else
row = row .. rowspan .. ' \'\'missing\'\' \n'
end
-- Add the Labour time column
row = row .. rowspan
if rowspanCount > 1 then
row = row .. '|'
end
if baseLaborCost then
row = row .. baseLaborCost .. '\n'
else
row = row .. rowspan .. ' \'\'missing\'\' \n'
end
-- Add the XP gain column
row = row .. rowspan
if rowspanCount > 1 then
row = row .. '|'
end
if baseXPGain then
row = row .. baseXPGain .. '\n'
else
row = row .. rowspan .. ' \'\'missing\'\' \n'
end
-- not in v0.9
-- Add the Affect by Skills column IF new skill grouping
--if j == 0 and (recipes[i].efficiencySkills[1] ~= nil and recipes[i].efficiencySkills[1] ~= 'nil')  then
--row = row .. '| rowspan=\"' .. skillIndex[k] .. '\" ' .. groupedskillcell({recipes[i].efficiencySkills[1], recipes[i].speedSkills}) .. '\n'
--elseif (recipes[i].efficiencySkills[1] == nil or recipes[i].efficiencySkills[1] == 'nil')  then
--row = row .. '| \n'
--end
--j = j + 1
--if #ingredients > 4 then
--j = j + 1
--end
--if j == skillIndex[k] then
--k = k + 1
--j = 0
--end
-- Add the SECOND row of ingredients to ingredients column if applicable
if ingrednum > 4 then
row = row .. '|-\n'
for b = 5, ingrednum do
if (ingrednum == 5) then
row = row .. '| colspan=\"4\" '
end
if ((ingrednum == 6) or (ingrednum == 7 and b == 6)) then
row = row .. '| colspan=\"2\" '
end
row = row .. itemcell({ingredients[b][2], ingredients[b][3]})
end
end
rows = rows .. row
end


                    --will need to cycle ingrediants to fill out complete table
--Show variants in table if only 1 recipe in list
                    --row = row .. itemcell({v.products[1][1], v.products[1][2]})
if #recipes == 1 and tonumber(recipes[i].numberOfVariants) > 1 then
                    local numing = ingrednum
for k, v in pairs(recipes[i].variants) do
                    if ingrednum > 4 then
--start new row for variants
                        numing = 4
row = '|-\n'
                    end
--Skip default variant
                    for b = 1, numing do
if v.products[1][1] ~= recipes[i].defaultVariant then
                        if (ingrednum == 1) then
local prodnum = #products
                            row = row .. '| colspan=\"4\" '
for a = 1, prodnum do
                        end
if prodnum == 1 then
                        if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
row = row .. rowspanProducts .. ' colspan=\"4\" '
                            row = row .. '| colspan=\"2\" '
end
                        end
if ((prodnum == 2) or (prodnum == 3 and a == 2)) then
                        row = row .. ingredientcell(v.ingredients[b])
row = row .. rowspanProducts .. ' colspan=\"2\" '
                    end
end
row = row .. itemcell({v.products[a][1], v.products[a][2]})
end


--will need to cycle ingrediants to fill out complete table
--row = row .. itemcell({v.products[1][1], v.products[1][2]})
local numing = ingrednum
if ingrednum > 4 then
numing = 4
end
for b = 1, numing do
if (ingrednum == 1) then
row = row .. '| colspan=\"4\" '
end
if ((ingrednum == 2) or (ingrednum == 3 and b == 2)) then
row = row .. '| colspan=\"2\" '
end
row = row .. itemcell({v.ingredients[b][2], v.ingredients[b][3]})
end
end
rows = rows .. row
end


                end
end
                rows = rows .. row
end
            end
        end
    end


     -- Return the full wikitable
     -- Return the full wikitable
    return header({ recipes[1].dispCraftStn }) .. rows .. '|-\n|}\n'
return header({recipes[1].dispCraftStn}) .. rows .. '|-\n|}\n'
end
end


return p
return p
Bitte kopiere keine Webseiten, die nicht deine eigenen sind, benutze keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!
Du gibst uns hiermit deine Zusage, dass du den Text selbst verfasst hast, dass der Text Allgemeingut (public domain) ist oder dass der Urheber seine Zustimmung gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weise bitte auf der Diskussionsseite darauf hin. Bitte beachte, dass alle Eco - Deutsches Wiki-Beiträge automatisch unter der „CC BY-NC-SA 4.0“ stehen (siehe Eco:Urheberrechte für Einzelheiten). Falls du nicht möchtest, dass deine Arbeit hier von anderen verändert und verbreitet wird, dann klicke nicht auf „Seite speichern“.

Um das Wiki vor automatisiertem Bearbeitungsspam zu schützen, bitten wir dich, das folgende hCaptcha zu lösen:

Abbrechen Bearbeitungshilfe (wird in einem neuen Fenster geöffnet)

Die folgende Vorlage wird auf dieser Seite verwendet: