Module:Game
From PC Gaming Shelter
Documentation for this module may be created at Module:Game/doc
local utils = require( 'Module:Utils' )
local p = {}
local function propertiesPlan()
-- ['Form field name'] = { 'Semantic property', 'delimiter' }
local propMap = {
['Release date'] = {'Has release date' },
['Developer'] = {'Has developer', ',' },
['Publisher'] = {'Has publisher' },
['Series'] = {'Has series', ',' },
['Image'] = {'Image', 'file' },
['Current version'] = {'Has version' },
['Genre'] = {'Has genre', ',' },
['Setting'] = {'Has setting', ',' },
['Has game mode'] = {'Has game mode', ',' },
['Platform'] = {'Has platform', ',' },
['Multiplayer tools'] = {'Has multiplayer tools', ',' }
}
return propMap
end
local function infoboxSectionPlan()
local sectionMap = {
['Game Info'] = {
'Developer',
'Publisher',
'Genre',
'Setting',
'Has game mode',
'Platform',
'Release date',
},
['These days'] = {
'Multiplayer tools',
'Current version'
}
}
return sectionMap
end
local function infoboxOrderPlan()
local propOrder = {
-- 'Developer',
-- 'Publisher',
-- 'Genre',
-- 'Setting',
-- 'Has game mode',
-- 'Platform',
-- 'Release date',
-- 'Multiplayer tools',
-- 'Current version'
}
return propOrder
end
local function dataPlan()
local onecolumn = utils.infoboxSectionClasses()['onecolumn']
local twocolumns = utils.infoboxSectionClasses()['twocolumns']
local sectionFormat = {
['Developer'] = {
label = 'Developer',
value = '%s',
separator = ',',
template = 'render',
valuefmt = 'wikilink',
class = twocolumns
},
['Publisher'] = {
label = 'Publisher',
value = '%s',
separator = ',',
template = 'render',
valuefmt = 'wikilink',
class = twocolumns
},
['Genre'] = {
label = 'Genre',
value = '%s',
separator = ',',
template = 'render',
valuefmt = '',
class = twocolumns
},
['Setting'] = {
label = 'Setting',
value = '%s',
separator = ',',
template = 'render',
valuefmt = '',
class = twocolumns
},
['Has game mode'] = {
label = 'Game Mode',
value = '%s',
separator = ',',
template = 'render',
valuefmt = '',
class = twocolumns
},
['Platform'] = {
label = 'Platform',
value = '%s',
separator = ',',
template = 'render',
valuefmt = '',
class = twocolumns
},
['Release date'] = {
label = 'Released',
value = '%s',
separator = ',',
template = 'render',
valuefmt = 'date',
class = twocolumns
},
['Current version'] = {
label = 'Version',
value = '%s',
separator = ',',
template = 'render',
valuefmt = '',
class = twocolumns
},
['Multiplayer tools'] = {
label = 'Multiplayer',
value = '%s',
separator = ',',
template = 'render',
valuefmt = '',
class = twocolumns
}
}
return sectionFormat
end
local function subobjectPlan()
return {
{
subobject = 'Store links',
label = 'Store'
},
{
subobject = 'Community links',
label = 'Community',
order = '9'
}
}
end
function p.infobox(frame)
local category = 'Games'
local properties = propertiesPlan()
local order = infoboxOrderPlan()
local sections = infoboxSectionPlan()
local data = dataPlan()
local subobjects = subobjectPlan()
local infobox = utils.createInfobox(frame, category, properties, order, sections, data, subobjects)
return infobox
end
return p
