style="vertical-align:middle; text-align:center;" Imbox_deletion.png ATTENTION! The process of updating WiKi to version Eco 10.x has begun. Those wishing to participate can find out more Information on our ECO Contribution Wiki Discord.
From April 26 to May 12, errors may occur in the Wiki, as we will be carrying out a major update to the information processing modules.

Module:Infobox Animal/sandbox: Difference between revisions

From Eco - English Wiki
[unchecked revision][checked revision]
m (Styles.)
m (Use assert.)
Line 7: Line 7:
function animalBox( args, animalData )
function animalBox( args, animalData )
     -- check that all necessary arguments are passed correctly
     -- check that all necessary arguments are passed correctly
     if args.name == nil or args.name == '' then
     assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')
        return 'ERROR: \'name\' must be specified.'
    end
      
      
local animal = args.name
    local animal = args.name
local animalTable = animalData.animals[animal]
    local animalTable = animalData.animals[animal]


--Check Passes
    --Check Passes
if animalTable == nil then
    assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))
return 'ERROR: \'' .. animal .. '\' could not be found in Module:AnimalData.'
end


     local animalEN = animalTable.untranslated
     local animalEN = animalTable.untranslated
local animalimagename = string.gsub(animalEN, ' ', '')
    local animalimagename = string.gsub(animalEN, ' ', '')
      
      
     -- string used to build the infobox
     -- string used to build the infobox
Line 40: Line 36:
     else  
     else  
         infobox = infobox .. '#11af53;\"\n| colspan=\"2\" | \'\'\'Land Animal\'\'\'[[Category:Animals]]\n'     
         infobox = infobox .. '#11af53;\"\n| colspan=\"2\" | \'\'\'Land Animal\'\'\'[[Category:Animals]]\n'     
     end
     end  


     -- Animals Icon Image
     -- Animals Icon Image
local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'
    local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'
if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then
    if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then
image = animalimagename .. '_Animal.png'
        image = animalimagename .. '_Animal.png'
elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then
    elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then
image = animalimagename .. '_Animal.jpg'
        image = animalimagename .. '_Animal.jpg'
end
    end
      
      
infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding:0;\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'
    infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding:0;\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'
      
      
     -- 'General' section header
     -- 'General' section header
     infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
     infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'


-- Health
    -- Health
if animalTable.health ~= nil then
    if animalTable.health ~= nil then
infobox = infobox .. '|-\n| Health:\n|' .. valueColumnStyle .. '| ' .. animalTable.health .. '\n'
        infobox = infobox .. '|-\n| Health:\n|' .. valueColumnStyle .. '| ' .. animalTable.health .. '\n'
end
    end  
   
-- Idle Speed
    -- Idle Speed
if animalTable.wanderingSpeed ~= nil then
    if animalTable.wanderingSpeed ~= nil then
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Idle Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Idle Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'
end
    end      


-- Eats
    -- Eats
if animalTable.foodSources ~= nil then
    if animalTable.foodSources ~= nil then
-- 12em seems to be enough for the other column to scale up to fill the remaining space.
        -- 12em seems to be enough for the other column to scale up to fill the remaining space.
-- With this the longest line "Attack Damage:" fits on one line.
        -- With this the longest line "Attack Damage:" fits on one line.
infobox = infobox .. '|-\n| Eats:\n|' .. longValueColumnStyle .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'
        infobox = infobox .. '|-\n| Eats:\n|' .. longValueColumnStyle .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'
end
    end  
   
-- Climbing
    -- Climbing
if animalTable.climbHeight ~= nil then
    if animalTable.climbHeight ~= nil then
infobox = infobox .. '|--' .. alternateRowColor .. '\n| Climb Height:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'
        infobox = infobox .. '|--' .. alternateRowColor .. '\n| Climb Height:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'
end
    end  
   
-- Carbon Released
    -- Carbon Released
if animalTable.carbonRelease ~= nil then
    if animalTable.carbonRelease ~= nil then
infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'
        infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'
end
    end  
 
   
     -- 'Hunting Information' section header
     -- 'Hunting Information' section header
     infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n'
     infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n'  


-- Harvest
    -- Harvest
if animalTable.resourceItem ~= nil then
    if animalTable.resourceItem ~= nil then
infobox = infobox .. '|-\n| Harvest Item:\n|' .. valueColumnStyle .. '| ' .. animalTable.resourceItem .. '\n'
        infobox = infobox .. '|-\n| Harvest Item:\n|' .. valueColumnStyle .. '| ' .. animalTable.resourceItem .. '\n'
end
    end  
   
-- Flees
    -- Flees
infobox = infobox .. '|--' .. alternateRowColor .. '\n| Flees:\n|' .. valueColumnStyle .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'
    infobox = infobox .. '|--' .. alternateRowColor .. '\n| Flees:\n|' .. valueColumnStyle .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'


-- Animals Fear
    -- Animals Fear
if animalTable.fearFactor ~= nil then
    if animalTable.fearFactor ~= nil then
infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. valueColumnStyle .. '| ' .. animalTable.fearFactor .. '\n'
        infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. valueColumnStyle .. '| ' .. animalTable.fearFactor .. '\n'
end
    end
   
-- Running Speed
    -- Running Speed
if animalTable.speed ~= nil then
    if animalTable.speed ~= nil then
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Flee Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Flee Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'
end
    end      


     -- Attack Chance
     -- Attack Chance
Line 108: Line 103:
         infobox = infobox .. '|-\n| Attack Chance:\n|' .. valueColumnStyle .. '| ' .. (animalTable.chanceToAttack*100) .. ' % \n'
         infobox = infobox .. '|-\n| Attack Chance:\n|' .. valueColumnStyle .. '| ' .. (animalTable.chanceToAttack*100) .. ' % \n'
     end
     end
   
-- Attack Damage
    -- Attack Damage
if animalTable.damage ~= nil then
    if animalTable.damage ~= nil then
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Damage:\n|' .. valueColumnStyle .. '| ' .. animalTable.damage .. '\n'
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Damage:\n|' .. valueColumnStyle .. '| ' .. animalTable.damage .. '\n'
end
    end
   
-- Detect Range
    -- Detect Range
if animalTable.detectRange ~= nil then
    if animalTable.detectRange ~= nil then
infobox = infobox .. '|-\n| Detect Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'
        infobox = infobox .. '|-\n| Detect Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'
end
    end


-- Attack Range
    -- Attack Range
if animalTable.attackRange ~= nil then
    if animalTable.attackRange ~= nil then
infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'
end
    end      
   
     infobox = infobox .. '|}'
     infobox = infobox .. '|}'
   
     return infobox
     return infobox
end
end
Line 132: Line 127:
function p.AnimalMain(frame)
function p.AnimalMain(frame)
     -- get args from the Template
     -- get args from the Template
local args = Utils.normaliseArgs(frame)
    local args = Utils.normaliseArgs(frame)
      
      
     -- get animal data
     -- get animal data
Line 138: Line 133:
      
      
     return animalBox( args, animalData )
     return animalBox( args, animalData )
   
end
end


return p
return p

Revision as of 21:11, 1 March 2022

Documentation for this module may be created at Module:Infobox Animal/sandbox/doc

local p = {}
local Utils = require("Module:Utils")
local Unit = require("Module:Unit")
local AnimalUtils = require("Module:UtilsAnimalTables")

-- Build an Animal Infobox
function animalBox( args, animalData )
    -- check that all necessary arguments are passed correctly
    assert(not Utils.isEmpty(args.name), 'Member \'name\' must be specified for an animal in Module:AnimalData.')
    
    local animal = args.name
    local animalTable = animalData.animals[animal]

    --Check Passes
    assert(animalTable ~= nil, mw.ustring.format('Animal \'%s\' could not be found in Module:AnimalData.', animal))

    local animalEN = animalTable.untranslated
    local animalimagename = string.gsub(animalEN, ' ', '')
    
    -- string used to build the infobox
    local alternateRowColor = ' bgcolor=\"#c3e2ec\"' -- Mixed in 10% Green Blue Crayola from the palette with the table background color.
    local headerStyle = 'style=\"background-color:#4688C0;text-align:center;\"'
    local valueColumnStyle = 'style=\"text-align:right;padding:0.2em\"'
    local longValueColumnStyle = 'style=\"text-align:right;padding:0.2em;max-width:12em\"'
    
    local infobox = '{| class=\"infobox\"\n'
    -- name of the animal
    infobox = infobox .. '|- style=\"color: white; background-color: #1165AF; text-align: center;\"\n| colspan=\"2\" | \'\'\'<big>' .. animal .. '</big>\'\'\'\n'
        
    -- Water, Flying or Land Animal
    infobox = infobox .. '|- style=\"text-align: center; color: white; background-color: '
    if animalTable.isSwimming == 'Swimming' then
        infobox = infobox .. '#65a9e6;\"\n| colspan=\"2\" | \'\'\'Water Animal\'\'\'[[Category:Animals]]\n'
    elseif animalTable.isFlying == 'Flying' then
        infobox = infobox .. '#e3bd27;\"\n| colspan=\"2\" | \'\'\'Flying Animal\'\'\'[[Category:Animals]]\n'
    else 
        infobox = infobox .. '#11af53;\"\n| colspan=\"2\" | \'\'\'Land Animal\'\'\'[[Category:Animals]]\n'     
    end    

    -- Animals Icon Image
    local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'
    if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then
        image = animalimagename .. '_Animal.png'
    elseif mw.title.makeTitle('File', animalimagename .. '_Animal.jpg').file.exists then
        image = animalimagename .. '_Animal.jpg'
    end
    
    infobox = infobox .. '|-\n| colspan=\"2\" style=\"padding:0;\" | [[File:' .. image .. '|center|frameless|250x250px]]\n'
    
    -- 'General' section header
    infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'

    -- Health
    if animalTable.health ~= nil then
        infobox = infobox .. '|-\n| Health:\n|' .. valueColumnStyle .. '| ' .. animalTable.health .. '\n'
    end    
    
    -- Idle Speed
    if animalTable.wanderingSpeed ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Idle Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'
    end        

    -- Eats
    if animalTable.foodSources ~= nil then
        -- 12em seems to be enough for the other column to scale up to fill the remaining space.
        -- With this the longest line "Attack Damage:" fits on one line.
        infobox = infobox .. '|-\n| Eats:\n|' .. longValueColumnStyle .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'
    end    
    
    -- Climbing
    if animalTable.climbHeight ~= nil then
        infobox = infobox .. '|--' .. alternateRowColor .. '\n| Climb Height:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'
    end    
    
    -- Carbon Released
    if animalTable.carbonRelease ~= nil then
        infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'
    end    
    
    -- 'Hunting Information' section header
    infobox = infobox .. '|-' .. headerStyle .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n'    

    -- Harvest
    if animalTable.resourceItem ~= nil then
        infobox = infobox .. '|-\n| Harvest Item:\n|' .. valueColumnStyle .. '| ' .. animalTable.resourceItem .. '\n'
    end    
    
    -- Flees
    infobox = infobox .. '|--' .. alternateRowColor .. '\n| Flees:\n|' .. valueColumnStyle .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'

    -- Animals Fear
    if animalTable.fearFactor ~= nil then
        infobox = infobox .. '|-\n| [[Fear Factor]]:\n|' .. valueColumnStyle .. '| ' .. animalTable.fearFactor .. '\n'
    end
    
    -- Running Speed
    if animalTable.speed ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Flee Speed:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'
    end        

    -- Attack Chance
    if animalTable.chanceToAttack ~= nil then
        infobox = infobox .. '|-\n| Attack Chance:\n|' .. valueColumnStyle .. '| ' .. (animalTable.chanceToAttack*100) .. ' % \n'
    end
    
    -- Attack Damage
    if animalTable.damage ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Damage:\n|' .. valueColumnStyle .. '| ' .. animalTable.damage .. '\n'
    end
    
    -- Detect Range
    if animalTable.detectRange ~= nil then
        infobox = infobox .. '|-\n| Detect Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.detectRange, 'm') .. '\n'
    end

    -- Attack Range
    if animalTable.attackRange ~= nil then
        infobox = infobox .. '|-' .. alternateRowColor .. '\n| Attack Range:\n|' .. valueColumnStyle .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'
    end        
    
    infobox = infobox .. '|}'
    
    return infobox
end

-- Main entry point for the Module
function p.AnimalMain(frame)
    -- get args from the Template
    local args = Utils.normaliseArgs(frame)
    
    -- get animal data
    local animalData = require( 'Module:AnimalData' )
    
    return animalBox( args, animalData )
end

return p