Module:AnimalInfoCard: Difference between revisions

From Eco - English Wiki
[unchecked revision][checked revision]
No edit summary
No edit summary
 
(83 intermediate revisions by 3 users not shown)
Line 1: Line 1:
local p = {}
local p = {}
local Utils = require('Module:Utils')
local IconUtils = require('Module:IconUtils')
local Lang = Utils.WikiLang


-- Grabs args from the parent frame
function p.main(frame)
-- Trims and parses the args into a table, then returns the table
local PageName = frame.args[1]
function norm()
if (Lang == 'English') then AnimalName = PageName else AnimalName = Utils.AnimalSearch(PageName) end
    local origArgs = mw.getCurrentFrame():getParent().args
local AnimalData = mw.loadData( "Module:AnimalData" )
     local args = {}
     local Animal = AnimalData.animals[AnimalName]
   
local WikiText =''
    for k, v in pairs( origArgs ) do
        v = mw.text.trim( tostring( v ) )
WikiText = WikiText ..'__NOTOC__'
        if v ~= '' then
WikiText = WikiText ..'page name get test: ' .. PageName ..'</br>'
            args[k] = v
WikiText = WikiText ..'Animal name get test: ' .. AnimalName ..'</br>'
        end
    end
WikiText =  WikiText .. '<div class="row gy-4 gx-5"><div class="col-md-6">'
   
local GalleryImagesList = AnimalName .. "_Animal.jpg|" .. AnimalName .."\n" .. AnimalName .. "_Animal.jpg"
    return args
WikiText =  WikiText .. frame:callParserFunction{ name = '#tag:gallery', args = { mode = 'slideshow', widths = '100%', ''.. GalleryImagesList .. '' , showthumbnails = 'true'} }
end
WikiText = WikiText .. '</div>'
 
WikiText = WikiText ..'<div class="col-md-6"><div class="card border-primary"><div class="card-body">'
 
    WikiText =  WikiText ..'<h2 class="card-title fs-40">' .. IconUtils.main{name = Animal.Name[Lang], id = Animal.ID , size = 48, style = 1} .. ' ' .. Animal.Name[Lang] .. '</h2>'
-- Build an Animal Infobox
WikiText = WikiText ..'<p class="col-lg-10 card-text">' .. Animal.Description[Lang] .. '</p>'
function animalBox( args, animalData )
WikiText = WikiText .. '<table class="table table-striped table-bordered w-80"><tr class="thead-dark">';
    -- check that all necessary arguments are passed correctly
WikiText =  WikiText .. '<th>' .. Utils.Translate("Name") .. '</th><th>' .. Utils.Translate("Value") .. '</th>'
    if args.name == nil or args.name == '' then
        return '\'name\' must be specified.'
WikiText =  WikiText .. '</table>'
    end
WikiText = WikiText ..'</div></div></div></div>'
   
local animal = args.name
if (Lang ~= 'English') then WikiText = WikiText .. '[[en:' .. Animal.Name.English .. ']]' end
 
if (Lang ~= 'Russian') then WikiText =  WikiText .. '[[ru:' .. Animal.Name.Russian .. ']]' end
local animalimagename = string.gsub(animal, ' ', '')
if (Lang ~= 'German') then WikiText = WikiText .. '[[de:' .. Animal.Name.German .. ']]' end
   
if (Lang ~= 'French') then WikiText = WikiText .. '[[fr:' .. Animal.Name.French .. ']]' end
local animalTable = animalData.animals[animal]
if animalTable == nil then
return animal .. ' could not be found in Module:AnimalData.'
end
   
    -- string used to build the infobox
    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 .. '#517ab2;\"\n| colspan=\"2\" | \'\'\'Water Animal\'\'\'\n'
    elseif animalTable.isFlying == 'Flying' then
        infobox = infobox .. '#bf8c3a;\"\n| colspan=\"2\" | \'\'\'Flying Animal\'\'\'\n'
    else
        infobox = infobox .. '#37b53e;\"\n| colspan=\"2\" | \'\'\'Land Animal\'\'\'\n'     
    end
    -- Animals Icon Image
local descriptionpage = Animal.Name[Lang] .. " - " .. Animal.Description[Lang]
    local image = 'NoImage.png|link=https://wiki.play.eco/index.php?title=Special:Upload&wpDestFile=' .. animalimagename .. '_Animal.png|[[Category:Pages_with_missing_animal]]'
WikiText = WikiText .. frame:callParserFunction{ name = '#description2', args = { descriptionpage }}
    if mw.title.makeTitle('File', animalimagename .. '_Animal.png').file.exists then
--- WikiText = WikiText .. frame:callParserFunction{ name = '#setmainimage', args = { AnimalName .. "_Animal.jpg" }}
        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: 10px;\" | [[File:' .. image .. '|center|border|240px]]\n'
   
    -- 'General' section header
    infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'General\'\'\'\n'
 
-- Health
if animalTable.health ~= nil then
infobox = infobox .. '|-\n| Health:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.health .. '\n'
end
-- Idle Speed
if animalTable.wanderingSpeed ~= nil then
infobox = infobox .. '|-\n| Idle Speed:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.wanderingSpeed .. ' mps\n'
end
 
-- Eats
if animalTable.foodSources ~= nil then
infobox = infobox .. '|-\n| Eats:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.foodSources .. '\n'
end
-- Climbing
if animalTable.climbHeight ~= nil then
infobox = infobox .. '|-\n| Climb Height:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.climbHeight .. ' m \n'
end
-- Carbon Released
if animalTable.carbonRelease ~= nil then
infobox = infobox .. '|-\n| Carbon Released:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.carbonRelease .. ' ppm \n'
end
 
    -- 'Hunting Infomation' section header
WikiText = WikiText .. Utils.checkImage(AnimalName .. '_Animal.jpg')
    infobox = infobox .. '|- style=\"background-color: #4688C0; text-align: center;\"\n| colspan=\"2\" | \'\'\'Hunting\'\'\'\n'
 
-- Harvest
if animalTable.resourceItem ~= nil then
infobox = infobox .. '|-\n| Harvest Item:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.resourceItem .. '\n'
end
-- Flees
if animalTable.flees ~= nil then
infobox = infobox .. '|-\n| Flees:\n| style=\"text-align: right; padding: 3px;\" | Yes \n'
else
infobox = infobox .. '|-\n| Flees:\n| style=\"text-align: right; padding: 3px;\" | No \n'
end
 
-- Animals Fear
if animalTable.fearFactor ~= nil then
infobox = infobox .. '|-\n| [[Fear Factor]]:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.fearFactor .. '\n'
end
-- Running Speed
if animalTable.speed ~= nil then
infobox = infobox .. '|-\n| Flee Speed:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.speed .. ' mps \n'
end
 
        -- Attack Chance
        if animalTable.chanceToAttack ~= nil then
            infobox = infobox .. '|-\n| Attack Chance:\n| style=\"text-align: right; padding: 3px;\" | ' .. (animalTable.chanceToAttack*100) .. ' % \n'
        end
-- Attack Damage
if animalTable.damage ~= nil then
infobox = infobox .. '|-\n| Attack Damage:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.damage .. '\n'
end
-- Detect Range
if animalTable.detectRange ~= nil then
infobox = infobox .. '|-\n| Detect Range:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.detectRange .. ' m \n'
end
 
-- Attack Range
if animalTable.attackRange ~= nil then
infobox = infobox .. '|-\n| Attack Range:\n| style=\"text-align: right; padding: 3px;\" | ' .. animalTable.attackRange .. ' m \n'
end
    infobox = infobox .. '|}'
    return infobox
return WikiText
end
end
-- Main entry point for the Module
function p.AnimalMain()
    -- get args from the Template
    local args = norm()
   
    -- get animal data
    local animalData = require( "Module:AnimalData" )
   
    return animalBox( args, animalData )
   
end


return p
return p

Latest revision as of 11:06, 13 April 2026

Documentation for this module may be created at Module:AnimalInfoCard/doc

local p = {}
local Utils = require('Module:Utils')
local IconUtils = require('Module:IconUtils')
local Lang = Utils.WikiLang

function p.main(frame)
	local PageName = frame.args[1]
	if (Lang == 'English') then AnimalName = PageName else AnimalName = Utils.AnimalSearch(PageName) end
	local AnimalData = mw.loadData( "Module:AnimalData" )
    local Animal = AnimalData.animals[AnimalName]
	local WikiText =''
	
	WikiText =  WikiText ..'__NOTOC__'
	WikiText =  WikiText ..'page name get test: ' .. PageName ..'</br>'
	WikiText =  WikiText ..'Animal name get test: ' .. AnimalName ..'</br>'
	
	WikiText =  WikiText .. '<div class="row gy-4 gx-5"><div class="col-md-6">'
	local GalleryImagesList = AnimalName .. "_Animal.jpg|" .. AnimalName .."\n" .. AnimalName .. "_Animal.jpg"
	WikiText =  WikiText .. frame:callParserFunction{ name = '#tag:gallery', args = { mode = 'slideshow', widths = '100%', ''.. GalleryImagesList .. '' , showthumbnails = 'true'} }
	WikiText =  WikiText .. '</div>'
	WikiText =  WikiText ..'<div class="col-md-6"><div class="card border-primary"><div class="card-body">'
    WikiText =  WikiText ..'<h2 class="card-title fs-40">' .. IconUtils.main{name = Animal.Name[Lang], id = Animal.ID , size = 48, style = 1} .. '  ' .. Animal.Name[Lang] .. '</h2>'
	WikiText =  WikiText ..'<p class="col-lg-10 card-text">' .. Animal.Description[Lang] .. '</p>'
	WikiText =  WikiText .. '<table class="table table-striped table-bordered w-80"><tr class="thead-dark">';
	WikiText =  WikiText .. '<th>' .. Utils.Translate("Name") .. '</th><th>' .. Utils.Translate("Value") .. '</th>'
	
	WikiText =  WikiText .. '</table>'
	WikiText =  WikiText ..'</div></div></div></div>'
	
	if (Lang ~= 'English') then WikiText =  WikiText .. '[[en:' .. Animal.Name.English .. ']]' end
	if (Lang ~= 'Russian') then WikiText =  WikiText .. '[[ru:' .. Animal.Name.Russian .. ']]' end
	if (Lang ~= 'German') then WikiText =  WikiText .. '[[de:' .. Animal.Name.German .. ']]' end
	if (Lang ~= 'French') then WikiText =  WikiText .. '[[fr:' .. Animal.Name.French .. ']]' end
	
	local descriptionpage = Animal.Name[Lang] .. " - " .. Animal.Description[Lang]
	WikiText =  WikiText .. frame:callParserFunction{ name = '#description2', args = { descriptionpage }}
	--- WikiText =  WikiText .. frame:callParserFunction{ name = '#setmainimage', args = { AnimalName .. "_Animal.jpg" }}
	
	WikiText =  WikiText .. Utils.checkImage(AnimalName .. '_Animal.jpg')
	
	
	return WikiText
end

return p