Module:Mapcheck

From Heroes 3 wiki
Revision as of 22:32, 7 January 2024 by Imahero (talk | contribs)
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)
	if not mw.site.server:find('heroes.thelazy.net') and not mw.site.server:find('fandom.com') then
		return ''
	end
	if mw.title.getCurrentTitle().text:find('Maps/') then
		return previewOnly(frame)
	end
	if mw.title.getCurrentTitle().text == 'Minimaps' then
		return previewMinimapOnly(frame)
	end
	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' or frame.args.underground == '' then
		table.insert(filelevels, ' underground ')
		none_u = '**'
	end
	for _, filelevel in pairs(filelevels) do
		for _, filesize in pairs({'tiny', 'small', 'medium', 'large', 'huge', 'auto', 'fullauto'}) 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)
					dimensions = 'view'
					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 previewOnly(frame)
	imagelink = frame.args.name
	if frame.args.imagelink then
		imagelink = frame.args.imagelink
	end
	compile = ''
	filelevels = {' '}
	if not frame.args.underground or frame.args.underground == 'enabled' or frame.args.underground == '' then
		table.insert(filelevels, ' underground ')
	end
	for _, filelevel in pairs(filelevels) do
		for _, filesize in pairs({'tiny', 'small', 'medium', 'large', 'huge', 'auto', 'fullauto'}) 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'}}
				if fileexists == 'yes' then
					compile = compile..'[[file:'..filename..'|'..'66px'..']]'
				end
			end
		end
	end
	return compile	
end

function previewMinimapOnly(frame)
	imagelink = frame.args.name
	if frame.args.imagelink then
		imagelink = frame.args.imagelink
	end
	compile = ''
	filelevels = {' '}
	if not frame.args.underground or frame.args.underground == 'enabled' or frame.args.underground == '' then
		table.insert(filelevels, ' underground ')
	end
	for _, filelevel in pairs(filelevels) do
		for _, filetype in pairs({'png', 'gif', 'jpg'}) do
			filename = imagelink..filelevel..'minimap.'..filetype
			filename = string.gsub(filename, ' ', '_')
			fileexists = frame:expandTemplate{title = 'exist', args = {'file:'..filename, 'yes'}}
			if fileexists == 'yes' then
				compile = compile..'[[file:'..filename..'|'..'66px'..']]'
			end
		end
	end
	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