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][unchecked revision]
mNo edit summary
mNo edit summary
Line 18: Line 18:
     local animalimagename = string.gsub(animalEN, ' ', '')
     local animalimagename = string.gsub(animalEN, ' ', '')
      
      
    -- string used to build the infobox
     local subheaderClass = 'class=\"subheader\"'
     local subheaderClass = 'class=\"subheader\"'
     local valueColumnClass = 'class=\"value-column\"'
     local valueColumnClass = 'class=\"value-column\"'
     local wideColumnClass = 'class=\"value-column wide-column\"'
     local wideColumnClass = 'class=\"value-column wide-column\"'
      
      
    -- string used to build the infobox
     local infobox = '{| class=\"infobox animal-infobox\"\n'
     local infobox = '{| class=\"infobox animal-infobox\"\n'
     -- name of the animal
     -- name of the animal
Line 56: Line 56:
     -- Idle Speed
     -- Idle Speed
     if animalTable.wanderingSpeed ~= nil then
     if animalTable.wanderingSpeed ~= nil then
         infobox = infobox .. '| Idle Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'
         infobox = infobox .. '|-\n| Idle Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.wanderingSpeed, 'm/s') .. '\n'
     end         
     end         


Line 68: Line 68:
     -- Climbing
     -- Climbing
     if animalTable.climbHeight ~= nil then
     if animalTable.climbHeight ~= nil then
         infobox = infobox .. '| Climb Height:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'
         infobox = infobox .. '|-\n| Climb Height:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'
     end     
     end     
      
      
Line 85: Line 85:
      
      
     -- Flees
     -- Flees
     infobox = infobox .. '| Flees:\n|' .. valueColumnClass .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'
     infobox = infobox .. '|-\n| Flees:\n|' .. valueColumnClass .. '| ' .. Utils.formatNilToYesNo(animalTable.flees) .. '\n'


     -- Animals Fear
     -- Animals Fear
Line 94: Line 94:
     -- Running Speed
     -- Running Speed
     if animalTable.speed ~= nil then
     if animalTable.speed ~= nil then
         infobox = infobox .. '| Flee Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'
         infobox = infobox .. '|-\n| Flee Speed:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.speed, 'm/s') .. '\n'
     end         
     end         


Line 104: Line 104:
     -- Attack Damage
     -- Attack Damage
     if animalTable.damage ~= nil then
     if animalTable.damage ~= nil then
         infobox = infobox .. '| Attack Damage:\n|' .. valueColumnClass .. '| ' .. animalTable.damage .. '\n'
         infobox = infobox .. '|-\n| Attack Damage:\n|' .. valueColumnClass .. '| ' .. animalTable.damage .. '\n'
     end
     end
      
      
Line 114: Line 114:
     -- Attack Range
     -- Attack Range
     if animalTable.attackRange ~= nil then
     if animalTable.attackRange ~= nil then
         infobox = infobox .. '| Attack Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'
         infobox = infobox .. '|-\n| Attack Range:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.attackRange, 'm') .. '\n'
     end         
     end         
      
      

Revision as of 19:17, 9 April 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, ' ', '')
    
    local subheaderClass = 'class=\"subheader\"'
    local valueColumnClass = 'class=\"value-column\"'
    local wideColumnClass = 'class=\"value-column wide-column\"'
    
    -- string used to build the infobox
    local infobox = '{| class=\"infobox animal-infobox\"\n'
    -- name of the animal
    infobox = infobox .. '|- class=\"animal-name\"\n| colspan=\"2\" | ' .. animal .. '\n'
        
    -- Water, Flying or Land Animal
    if animalTable.isSwimming == 'Swimming' then
        infobox = infobox .. '|- class=\"animal-type swimming\"\n| colspan=\"2\" | Water Animal[[Category:Animals]]\n'
    elseif animalTable.isFlying == 'Flying' then
        infobox = infobox .. '|- class=\"animal-type flying\"\n| colspan=\"2\" | Flying Animal[[Category:Animals]]\n'
    else 
        infobox = infobox .. '|- class=\"animal-type land\"\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 .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'General\'\'\'\n'

    -- Health
    if animalTable.health ~= nil then
        infobox = infobox .. '|-\n| Health:\n|' .. valueColumnClass .. '| ' .. animalTable.health .. '\n'
    end    
    
    -- Idle Speed
    if animalTable.wanderingSpeed ~= nil then
        infobox = infobox .. '|-\n| Idle Speed:\n|' .. valueColumnClass .. '| ' .. 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|' .. wideColumnClass .. '| ' .. AnimalUtils.formatFoodSources(animalTable.foodSources) .. '\n'
    end    
    
    -- Climbing
    if animalTable.climbHeight ~= nil then
        infobox = infobox .. '|-\n| Climb Height:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.climbHeight, 'm') .. '\n'
    end    
    
    -- Carbon Released
    if animalTable.carbonRelease ~= nil then
        infobox = infobox .. '|-\n| Carbon Released:\n|' .. valueColumnClass .. '| ' .. Unit._unit(animalTable.carbonRelease, 'ppm') .. '\n'
    end    
    
    -- 'Hunting Information' section header
    infobox = infobox .. '|-' .. subheaderClass .. '\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n'    

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

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

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

    -- Attack Range
    if animalTable.attackRange ~= nil then
        infobox = infobox .. '|-\n| Attack Range:\n|' .. valueColumnClass .. '| ' .. 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