Module:Mapcheck

From Heroes 3 wiki
Revision as of 05:44, 20 December 2023 by Imahero (talk | contribs) (it was backwards)
Jump to navigation Jump to search

Usage

{{#invoke:mapcheck|mapcheck|name=A New Day Tomorrow}}

local p = {} --p stands for package

function p.mapcheck(frame)
	maplink = ''
	if frame.args.map_link then
		maplink = frame.args.map_link..'|'
	end
	imagelink = frame.args.name
	if frame.args.imagelink then
		imagelink = frame.args.imagelink
	end
	mapsize = ''
	if frame.args.size then
		mapsize = ' ('..frame.args.size..')'
	end
	compile = ''
	none = '**'
	none_u = ''
	filelevels = {' '}
	if not frame.args.underground or frame.args.underground == 'enabled' then
		table.insert(filelevels, ' underground ')
		none_u = '**'
	end
	for _, filelevel in pairs(filelevels) do
		for _, filesize in pairs({'tiny', 'small', 'medium', 'large', 'huge'}) do
			for _, filetype in pairs({'png', 'gif', 'jpg'}) do
				filename = imagelink..filelevel..'map '..filesize..'.'..filetype
				filename = string.gsub(filename, ' ', '_')
				fileexists = frame:expandTemplate{title = 'exist', args = {'file:'..filename, 'yes'}}
				underground = ''
				if filelevel == ' underground ' then
					underground = '(u)'
				end
				if fileexists == 'yes' then
					if filelevel == ' underground ' then
						underground = '(u)'
						none_u = ''
					else
						none = ''
					end
					dimensions = getDimensions(filename)
					compile = compile..'[[:file:'..filename..'|'..filesize..underground..'('..dimensions..')'..']], '
				elseif filetype == 'png' then
					compile = compile..frame:expandTemplate{title='extLink', args={link='https://heroes.thelazy.net/index.php?title=Special:Upload&wpDestFile='..filename, title=filesize..underground}}..', '
				end
			end
		end
	end
	compile = mw.ustring.sub(compile, 0, string.len(compile)-2)
	compile = '[['..maplink..frame.args.name..']]'..mapsize..none..none_u..': '..compile
	return compile
end

function getDimensions(filename)
	map = mw.title.makeTitle(6, filename)
	-- if map.file.width then
		-- if map.file.height then
    		return map.file.width..'x'..map.file.height
		-- end
	-- end
	-- return ''
end

return p