Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.
The main server is currently down. We are running on a backup server, so editing and search functionality are temporarily disabled. Please check back in a few hours.

Module:Infobox GBA Homebrews: Difference between revisions

From GameBrew
No edit summary
No edit summary
Line 143: Line 143:
return getLink( 'Source', source ) .. '[[Category:Open source homebrew]]'
return getLink( 'Source', source ) .. '[[Category:Open source homebrew]]'
end
end
local function getDonation( donation )
if empty( donation ) then return end
if donation == 'included' then return 'Donation included[[Category:Support the author]]' end
   
   
return getLink( 'Support Author', donation ) .. '[[Category:Support the author]]'
end
local function getDownloadMii( dm, dmversion, version )
local function getDownloadMii( dm, dmversion, version )
if not dm or dm ~= 'yes' then return end
if not dm or dm ~= 'yes' then return end
Line 193: Line 200:
data16  = getLink( 'Website', a.website ),
data16  = getLink( 'Website', a.website ),
data17  = getSource( a.source ),
data17  = getSource( a.source ),
data18  = getLink( 'Support Author', a.discussion ),
data18  = getDonation( a.donation),
data19  = getDownloadMii( a.dm, a.dmversion, a.version ),
data19  = getDownloadMii( a.dm, a.dmversion, a.version ),
below    = a.below
below    = a.below

Revision as of 01:15, 14 August 2023

Documentation for this module may be created at Module:Infobox GBA Homebrews/doc

local p = {}

local function div()
local div = mw.html.create( 'div' )
div
	:attr( 'id', 'Ads-Infobox' )
return tostring( div )
end

local function div2()
local div = mw.html.create( 'div' )
div
	:attr( 'id', 'largemobilebanner' )
return tostring( div )
end

local function div3()
local div = mw.html.create( 'div' )
div
	:attr( 'id', 'Ads-Infobox1' )
return tostring( div )
end
 
local function empty(param)
	return not param or param == ''	
end

local function formatUser( user )
	return '[[User:' .. user .. (user:find('|') and '' or ('|' .. user)) .. ']]'
end
 
local function userList( list )
	if empty(list) then return end
 
	if not list:find(',') then
		return formatUser(list)	
	end
 
	local ret = {}
	for user in mw.text.gsplit( list, '%s*,%s*' ) do
		ret[#ret+1] = formatUser(user)	
	end
	return table.concat( ret, ', ' )
end
 
local function getType( type )
	if empty( type ) then return end
 
	local types = {
		-- Applications
		['media player']       = '[[List of  GBA homebrew applications#Media players|Media player]] [[Category: GBA Homebrew media players]]',
		['utility']            = '[[List of  GBA homebrew applications#Utilities|Utility]] [[Category: GBA Homebrew utilities]]',
		['operating system']   = '[[List of  GBA homebrew applications#Operating systems|Operating system]] [[Category: GBA Homebrew operating systems]]',
		['math']               = '[[List of  GBA homebrew applications#Math|Math application]] [[Category: GBA Homebrew math applications]]',
		['other']              = '[[List of  GBA homebrew applications#Other applications|Other application]] [[Category: GBA Homebrew other applications]]',
		-- Games
		['arcade game']        = '[[List of  GBA homebrew games#Arcade|Arcade game]] [[Category: GBA Homebrew arcade games]]',
		['board game']         = '[[List of  GBA homebrew games#Board|Board game]] [[Category: GBA Homebrew board games]]',
		['card game']          = '[[List of  GBA homebrew games#Card|Card game]] [[Category: GBA Homebrew card games]]',
		['game engine']        = '[[List of  GBA homebrew games#Game engine|Game engine]] [[Category: GBA Homebrew game engines]]',
		['music game']         = '[[List of  GBA homebrew games#Music|Music game]] [[Category: GBA Homebrew music games]]',
		['platform game']      = '[[List of  GBA homebrew games#Platform|Platform game]] [[Category: GBA Homebrew platform games]]',
		['puzzle game']        = '[[List of  GBA homebrew games#Puzzle|Puzzle game]] [[Category: GBA Homebrew puzzle games]]',
		['racing game']        = '[[List of  GBA homebrew games#Racing|Racing game]] [[Category: GBA Homebrew racing games]]',
		['role playing game']  = '[[List of  GBA homebrew games#Role playing|Role playing game]] [[Category: GBA Homebrew role playing games]]',
		['shooting game']      = '[[List of  GBA homebrew games#Shooter|Shooting game]] [[Category: GBA Homebrew shooting games]]',
		['simulation game']    = '[[List of  GBA homebrew games#Simulation|Simulation game]] [[Category: GBA Homebrew simulation games]]',
		['trivia game']        = '[[List of  GBA homebrew games#Trivia|Trivia game]] [[Category: GBA Homebrew trivia games]]',
		['other game']         = '[[List of  GBA homebrew games#Other games|Other game]] [[Category: GBA Homebrew other games]]',
		-- Emulators
		['console emulator']   = '[[List of  GBA homebrew emulators#Console|Console emulator]] [[Category: GBA Homebrew console emulators]]',
		['handheld emulator']  = '[[List of  GBA homebrew emulators#Handheld|Handheld emulator]] [[Category: GBA Homebrew portable emulators]]',
		['arcade emulator']    = '[[List of  GBA homebrew emulators#Arcade|Arcade emulator]] [[Category: GBA Homebrew arcade emulators]]',
		['computer emulator']  = '[[List of  GBA homebrew emulators#Computer|Computer emulator]] [[Category: GBA Homebrew computer emulators]]',
		-- Loaders
		['loader']             = '[[List of  GBA homebrew loaders|Loader]] [[Category: GBA Homebrew loaders]]',
		-- Exploits
		['exploit']            = '[[List of  GBA homebrew exploits|Exploit]] [[Category: GBA Homebrew exploits]]',
		-- System Tools
		['system tool']        = '[[List of  GBA system tools|System tool]] [[Category: GBA homebrew system tools]]',
		-- PC Utilities
		['pc utility']         = '[[List of  GBA PC utilities|PC utility]] [[Category: GBA PC utilities]]',
		-- Demos
		['demo']               = '[[List of  GBA homebrew demos|Demo]] [[Category: GBA homebrew demos]]',
	}
 
	return types[type] or type .. '[[Category:Infobox homebrew using invalid type parameter]]'
end
 
local function getLicense( license )
	if empty( license ) then return end
 
	local licenses = {
		['Apache']       = '[https://www.apache.org/licenses/LICENSE-2.0 Apache License 2.0]',
		['GNU GPL']      = '[https://www.gnu.org/licenses/gpl.html GNU GPL]',
		['GNU LGPL']     = '[https://www.gnu.org/licenses/lgpl.html GNU LGPL]',
		['BSD 2-Clause'] = '[http://opensource.org/licenses/BSD-2-Clause BSD 2-Clause]',
		['BSD 3-Clause'] = '[http://opensource.org/licenses/BSD-3-Clause BSD 3-Clause]',
		['Mixed'] 		 = 'Mixed',
		['MIT']          = '[http://opensource.org/licenses/mit-license.html MIT License]',
	}
 
	return licenses[license] or license
end
 
local function getFormats( a )
	local formats = { '3dsx', '3ds', 'cia', 'bin', 'dat', 'cxi' }
	local ret = {}
 
	for i=1,#formats do
		local f = formats[i]
		local tmp = a[f]
		if not empty(tmp) then
			local label = f == 'bin' and 'bin/elf' or f
			if tmp == 'yes' then
				ret[#ret+1] = label .. ' <span style="color:#00B000">✔</span>'
			elseif tmp == 'no' then
				ret[#ret+1] = label .. ' <span style="color:red">✘</span>'
			else
				ret[#ret+1] = label .. ' <span style="color:orange">?</span>'
			end
		end
	end
 
	if next(ret) == nil then return end -- We got nothing...
	return table.concat(ret, '<br />')
end
 
local function getLink( label, link, altlink )
	if empty( link ) then return altlink end
 
	if link:find( '://' ) then
		return '[' .. link .. ' ' .. label .. ']'
	end
 
	return '[[' .. link .. '|' .. label .. ']]'
end
 
local function getSource( source )
	if empty( source ) then return end
	if source == 'included' then return 'Source included[[Category:Open source homebrew]]' end
 
	return getLink( 'Source', source ) .. '[[Category:Open source homebrew]]'
end

local function getDonation( donation )
	if empty( donation ) then return end
	if donation == 'included' then return 'Donation included[[Category:Support the author]]' end
 
	return getLink( 'Support Author', donation ) .. '[[Category:Support the author]]'
end

local function getDownloadMii( dm, dmversion, version )
	if not dm or dm ~= 'yes' then return end
 
	if empty(dmversion) or dmversion == version then
		return 'Downloadable via [[DownloadMii]] [[Category:3 GBA Homebrew in DownloadMii]]'
	else
		return "Version '''" .. dmversion .. "''' downloadable via [[DownloadMii]] [[Category:3 GBA Homebrew in DownloadMii]]"
	end
end
 
function p.main( frame )
	local a = frame:getParent().args
	local infobox = require( 'Module:Infobox' )
 
	if not empty( a.title ) then
		frame:callParserFunction( 'DISPLAYTITLE', a.title )	
	end
 
	local ibData = {
		title    = a.title,
		image    = a.image,
		imagesize    = a.imagesize or '48px',
		imagecaption = a.imagecaption,
		header2  = 'General',
		label3   = 'Author',
		data3    = a.author,
		label4   = 'Contributor',
		data4    = userList( a.contributor ),
		label5   = 'Ported by',
		data5    = userList( a.portedby ),
		label6   = 'Type',
		data6    = getType( a['type'] ),
		label7   = 'Version',
		data7    = a.version,
		label8   = 'License',
		data8    = getLicense( a.license ),
		label9   = 'Language',
		data9    = a.language,
		label10  = 'Format',
		data10   = getFormats( a ),
		label11   = 'Last Updated',
		data11    = a.lastupdated,
        header13 = div3(),
        header20 = div(),
        header1 = div2(),
		-- Links
		data15   = getLink( 'Download', a.download, a.downloadraw ),
		data16   = getLink( 'Website', a.website ),
		data17   = getSource( a.source ),
		data18   = getDonation( a.donation),
		data19   = getDownloadMii( a.dm, a.dmversion, a.version ),
		below    = a.below
	}
 
	if ibData.data15 or ibData.data16 or ibData.data17 or ibData.data18 or ibData.data19 then ibData.header14 = 'Links' end
 
	if a.cia == 'yes' then
		ibData.header111 = 'CIA information'
		ibData.label112  = 'Title ID'
		ibData.data112   = a.titleID or 'Unknown[[Category:3 GBA Homebrew missing CIA titleID]]'
		ibData.label113  = 'Unique ID'
		ibData.data113   = a.uniqueID or 'Unknown[[Category:3 GBA Homebrew missing CIA uniqueID]]'
	end
 
	return infobox.infobox( ibData )
end
 
return p

Advertising: