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
..
Line 49: Line 49:
     local categories = {
     local categories = {
         -- Applications
         -- Applications
         ['File Browsers']        = {'GBA homebrew applications', 'Utility Applications on GBA', 'GBA Homebrew Applications'},
         ['File Browsers']        = {'GBA homebrew applications', 'Utility applications on GBA', 'GBA homebrew applications'},
         ['Math']                = {'GBA homebrew applications', 'Maths Applications on GBA', 'GBA Homebrew Applications'},
         ['Math']                = {'GBA homebrew applications', 'Maths applications on GBA', 'GBA homebrew applications'},
         ['Media Players']        = {'GBA homebrew applications', 'Media Players on GBA', 'GBA Homebrew Applications'},
         ['Media Players']        = {'GBA homebrew applications', 'Media players on GBA', 'GBA homebrew applications'},
         ['Music Apps']          = {'GBA homebrew applications', 'Music Applications on GBA', 'GBA Homebrew Applications'},
         ['Music Apps']          = {'GBA homebrew applications', 'Music applications on GBA', 'GBA homebrew applications'},
         ['Other Apps']          = {'GBA homebrew applications', 'Other Applications on GBA', 'GBA Homebrew Applications'},
         ['Other Apps']          = {'GBA homebrew applications', 'Other applications on GBA', 'GBA homebrew applications'},
         ['System Tools']        = {'GBA homebrew applications', 'System Tools on GBA', 'GBA Homebrew Applications'},
         ['System Tools']        = {'GBA homebrew applications', 'System tools on GBA', 'GBA homebrew applications'},
         ['Utilities']            = {'GBA homebrew applications', 'Utility Applications on GBA', 'GBA Homebrew Applications'},
         ['Utilities']            = {'GBA homebrew applications', 'Utility applications on GBA', 'GBA homebrew applications'},
['Plugins']              = {'GBA homebrew applications', 'GBA Plugins for PogoShell', 'GBA Homebrew Applications'},
['Plugins']              = {'GBA homebrew applications', 'GBA plugins for PogoShell', 'GBA homebrew applications'},
         -- Games
         -- Games
         ['Action']              = {'GBA homebrew games', 'Action Games on GBA', 'GBA Homebrew Games'},
         ['Action']              = {'GBA homebrew games', 'Action games on GBA', 'GBA homebrew games'},
         ['Adventure']            = {'GBA homebrew games', 'Adventure Games on GBA', 'GBA Homebrew Games'},
         ['Adventure']            = {'GBA homebrew games', 'Adventure games on GBA', 'GBA homebrew games'},
         ['Arcade Games']        = {'GBA homebrew games', 'Arcade Games on GBA', 'GBA Homebrew Games'},
         ['Arcade Games']        = {'GBA homebrew games', 'Arcade games on GBA', 'GBA homebrew games'},
         ['Board']                = {'GBA homebrew games', 'Board Games on GBA', 'GBA Homebrew Games'},
         ['Board']                = {'GBA homebrew games', 'Board games on GBA', 'GBA homebrew games'},
         ['Card']                = {'GBA homebrew games', 'Card Games on GBA', 'GBA Homebrew Games'},
         ['Card']                = {'GBA homebrew games', 'Card games on GBA', 'GBA homebrew games'},
         ['Game Engine']          = {'GBA homebrew games', 'Game Engines on GBA', 'GBA Homebrew Games'},
         ['Game Engine']          = {'GBA homebrew games', 'Game engines on GBA', 'GBA homebrew games'},
         ['Music']                = {'GBA homebrew games', 'Music Games on GBA', 'GBA Homebrew Games'},
         ['Music']                = {'GBA homebrew games', 'Music games on GBA', 'GBA homebrew games'},
         ['Other Games']          = {'GBA homebrew games', 'Other Games on GBA', 'GBA Homebrew Games'},
         ['Other Games']          = {'GBA homebrew games', 'Other games on GBA', 'GBA homebrew games'},
         ['Platform']            = {'GBA homebrew games', 'Platform Games on GBA', 'GBA Homebrew Games'},
         ['Platform']            = {'GBA homebrew games', 'Platform games on GBA', 'GBA homebrew games'},
         ['Puzzle']              = {'GBA homebrew games', 'Puzzle Games on GBA', 'GBA Homebrew Games'},
         ['Puzzle']              = {'GBA homebrew games', 'Puzzle games on GBA', 'GBA homebrew games'},
         ['Racing']              = {'GBA homebrew games', 'Racing Games on GBA', 'GBA Homebrew Games'},
         ['Racing']              = {'GBA homebrew games', 'Racing games on GBA', 'GBA homebrew games'},
         ['Role Playing']        = {'GBA homebrew games', 'Role Playing Games on GBA', 'GBA Homebrew Games'},
         ['Role Playing']        = {'GBA homebrew games', 'Role playing games on GBA', 'GBA homebrew games'},
         ['Shooter']              = {'GBA homebrew games', 'Shooter Games on GBA', 'GBA Homebrew Games'},
         ['Shooter']              = {'GBA homebrew games', 'Shooter games on GBA', 'GBA homebrew games'},
         ['Simulation']          = {'GBA homebrew games', 'Simulation Games on GBA', 'GBA Homebrew Games'},
         ['Simulation']          = {'GBA homebrew games', 'Simulation games on GBA', 'GBA homebrew games'},
         ['Strategy']            = {'GBA homebrew games', 'Strategy Games on GBA', 'GBA Homebrew Games'},
         ['Strategy']            = {'GBA homebrew games', 'Strategy games on GBA', 'GBA homebrew games'},
         ['Trivia']              = {'GBA homebrew games', 'Trivia Games on GBA', 'GBA Homebrew Games'},
         ['Trivia']              = {'GBA homebrew games', 'Trivia games on GBA', 'GBA homebrew games'},
         -- Emulators
         -- Emulators
         ['Arcade']              = {'GBA homebrew emulators', 'Arcade Emulators on GBA', 'GBA Homebrew Emulators'},
         ['Arcade']              = {'GBA homebrew emulators', 'Arcade emulators on GBA', 'GBA homebrew emulators'},
         ['Computer']            = {'GBA homebrew emulators', 'Computer Emulators on GBA', 'GBA Homebrew Emulators'},
         ['Computer']            = {'GBA homebrew emulators', 'Computer emulators on GBA', 'GBA homebrew emulators'},
         ['Console']              = {'GBA homebrew emulators', 'Console Emulators on GBA', 'GBA Homebrew Emulators'},
         ['Console']              = {'GBA homebrew emulators', 'Console emulators on GBA', 'GBA homebrew emulators'},
         ['Handheld']            = {'GBA homebrew emulators', 'Handheld Emulators on GBA', 'GBA Homebrew Emulators'},
         ['Handheld']            = {'GBA homebrew emulators', 'Handheld emulators on GBA', 'GBA homebrew emulators'},
         ['Other Emulators']      = {'GBA homebrew emulators', 'Other Emulators on GBA', 'GBA Homebrew Emulators'},
         ['Other Emulators']      = {'GBA homebrew emulators', 'Other emulators on GBA', 'GBA homebrew emulators'},
         -- PC (PC Utilities for GBA)
         -- PC (PC Utilities for GBA)
         ['Builder Tools']          = {'GBA PC utilities', 'Rom Builders for GBA', 'PC Utilities for GBA'},
         ['Builder Tools']          = {'GBA PC utilities', 'Rom builders for GBA', 'PC utilities for GBA'},
         ['Development']            = {'GBA PC utilities', 'Development Utilities for GBA', 'PC Utilities for GBA'},
         ['Development']            = {'GBA PC utilities', 'Development utilities for GBA', 'PC utilities for GBA'},
         ['Development Tools']    = {'GBA PC utilities', 'Development Utilities for GBA', 'PC Utilities for GBA'},
         ['Development Tools']    = {'GBA PC utilities', 'Development utilities for GBA', 'PC utilities for GBA'},
         ['File Operation']        = {'GBA PC utilities', 'File Management Utilities for GBA', 'PC Utilities for GBA'},
         ['File Operation']        = {'GBA PC utilities', 'File management utilities for GBA', 'PC utilities for GBA'},
         ['PC Utilities']          = {'GBA PC utilities', 'Other PC Utilities for GBA', 'PC Utilities for GBA'},
         ['PC Utilities']          = {'GBA PC utilities', 'Other PC utilities for GBA', 'PC utilities for GBA'},
         -- Demos
         -- Demos
         ['Demos']                = {'GBA homebrew demos', 'Demo Homebrews on GBA', 'GBA Homebrew Applications'},
         ['Demos']                = {'GBA homebrew demos', 'Demo homebrews on GBA', 'GBA homebrew applications'},
         -- ROM Hack
         -- ROM Hack
         ['Game Hacks']          = {'all GBA Rom Hacks', 'GBA Game Hacks', 'GBA Rom Hacks'},
         ['Game Hacks']          = {'all GBA Rom Hacks', 'GBA game hacks', 'GBA rom hacks'},
         ['Translations']        = {'all GBA Rom Hacks', 'GBA Game Translations', 'GBA Rom Hacks'},
         ['Translations']        = {'all GBA Rom Hacks', 'GBA game translations', 'GBA rom hacks'},
         ['Hack Utilities']      = {'all GBA Rom Hacks', 'GBA Hack Utilities', 'GBA Rom Hacks'},
         ['Hack Utilities']      = {'all GBA Rom Hacks', 'GBA hack utilities', 'GBA rom hacks'},
     }
     }


Line 153: Line 153:
local function getSource( source )
local function getSource( source )
if empty( source ) then return end
if empty( source ) then return end
if source == 'included' then return 'Source included[[Category:GBA Open Source Homebrew]]' end
if source == 'included' then return 'Source included[[Category:GBA open source homebrew]]' end
   
   
return getLink( 'Source', source ) .. '[[Category:GBA Open Source Homebrew]]'
return getLink( 'Source', source ) .. '[[Category:GBA open source homebrew]]'
end
end



Revision as of 03:22, 19 June 2024

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(typeVal)
    if not typeVal then return end

    local categories = {
        -- Applications
        ['File Browsers']        = {'GBA homebrew applications', 'Utility applications on GBA', 'GBA homebrew applications'},
        ['Math']                 = {'GBA homebrew applications', 'Maths applications on GBA', 'GBA homebrew applications'},
        ['Media Players']        = {'GBA homebrew applications', 'Media players on GBA', 'GBA homebrew applications'},
        ['Music Apps']           = {'GBA homebrew applications', 'Music applications on GBA', 'GBA homebrew applications'},
        ['Other Apps']           = {'GBA homebrew applications', 'Other applications on GBA', 'GBA homebrew applications'},
        ['System Tools']         = {'GBA homebrew applications', 'System tools on GBA', 'GBA homebrew applications'},
        ['Utilities']            = {'GBA homebrew applications', 'Utility applications on GBA', 'GBA homebrew applications'},
		['Plugins']              = {'GBA homebrew applications', 'GBA plugins for PogoShell', 'GBA homebrew applications'},
        -- Games
        ['Action']               = {'GBA homebrew games', 'Action games on GBA', 'GBA homebrew games'},
        ['Adventure']            = {'GBA homebrew games', 'Adventure games on GBA', 'GBA homebrew games'},
        ['Arcade Games']         = {'GBA homebrew games', 'Arcade games on GBA', 'GBA homebrew games'},
        ['Board']                = {'GBA homebrew games', 'Board games on GBA', 'GBA homebrew games'},		
        ['Card']                 = {'GBA homebrew games', 'Card games on GBA', 'GBA homebrew games'},	
        ['Game Engine']          = {'GBA homebrew games', 'Game engines on GBA', 'GBA homebrew games'},	
        ['Music']                = {'GBA homebrew games', 'Music games on GBA', 'GBA homebrew games'},	
        ['Other Games']          = {'GBA homebrew games', 'Other games on GBA', 'GBA homebrew games'},	
        ['Platform']             = {'GBA homebrew games', 'Platform games on GBA', 'GBA homebrew games'},	
        ['Puzzle']               = {'GBA homebrew games', 'Puzzle games on GBA', 'GBA homebrew games'},	
        ['Racing']               = {'GBA homebrew games', 'Racing games on GBA', 'GBA homebrew games'},	
        ['Role Playing']         = {'GBA homebrew games', 'Role playing games on GBA', 'GBA homebrew games'},	
        ['Shooter']              = {'GBA homebrew games', 'Shooter games on GBA', 'GBA homebrew games'},	
        ['Simulation']           = {'GBA homebrew games', 'Simulation games on GBA', 'GBA homebrew games'},	
        ['Strategy']             = {'GBA homebrew games', 'Strategy games on GBA', 'GBA homebrew games'},	
        ['Trivia']               = {'GBA homebrew games', 'Trivia games on GBA', 'GBA homebrew games'},	
        -- Emulators
        ['Arcade']               = {'GBA homebrew emulators', 'Arcade emulators on GBA', 'GBA homebrew emulators'},
        ['Computer']             = {'GBA homebrew emulators', 'Computer emulators on GBA', 'GBA homebrew emulators'},
        ['Console']              = {'GBA homebrew emulators', 'Console emulators on GBA', 'GBA homebrew emulators'},
        ['Handheld']             = {'GBA homebrew emulators', 'Handheld emulators on GBA', 'GBA homebrew emulators'},
        ['Other Emulators']      = {'GBA homebrew emulators', 'Other emulators on GBA', 'GBA homebrew emulators'},
        -- PC (PC Utilities for GBA)
        ['Builder Tools']          = {'GBA PC utilities', 'Rom builders for GBA', 'PC utilities for GBA'},
        ['Development']            = {'GBA PC utilities', 'Development utilities for GBA', 'PC utilities for GBA'},
        ['Development Tools']     = {'GBA PC utilities', 'Development utilities for GBA', 'PC utilities for GBA'},
        ['File Operation']         = {'GBA PC utilities', 'File management utilities for GBA', 'PC utilities for GBA'},
        ['PC Utilities']           = {'GBA PC utilities', 'Other PC utilities for GBA', 'PC utilities for GBA'},
        -- Demos
        ['Demos']                = {'GBA homebrew demos', 'Demo homebrews on GBA', 'GBA homebrew applications'},
        -- ROM Hack
        ['Game Hacks']           = {'all GBA Rom Hacks', 'GBA game hacks', 'GBA rom hacks'},
        ['Translations']         = {'all GBA Rom Hacks', 'GBA game translations', 'GBA rom hacks'},
        ['Hack Utilities']       = {'all GBA Rom Hacks', 'GBA hack utilities', 'GBA rom hacks'},
    }

    local category = categories[typeVal]
    if category then
            return string.format('[[List of %s#%s|%s]] [[Category:%s]] [[Category:%s]]', category[1], typeVal, typeVal, category[2], category[3])
    else
        return typeVal .. '[[Category:Infobox homebrew using invalid type parameter]]'
    end
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:GBA open source homebrew]]' end
 
	return getLink( 'Source', source ) .. '[[Category:GBA 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: