mNo edit summary |
mNo edit summary |
||
Line 59: | Line 59: | ||
end |
end |
||
if not args.dungeons then |
if not args.dungeons then |
||
⚫ | |||
if args.bedrock then |
if args.bedrock then |
||
+ | local menu = 'Audio' |
||
− | + | local upcoming = parent:expandTemplate{ title = 'upcoming', args = { 'Bedrock 1.16.200' } } |
|
else |
else |
||
+ | local menu = 'Music and Sounds' |
||
⚫ | |||
end |
end |
||
⚫ | |||
⚫ | |||
end |
end |
||
local descriptionheading = parent:expandTemplate{ title = 'abbr', args = { 'Description', 'When the game calls this sound event.' } } |
local descriptionheading = parent:expandTemplate{ title = 'abbr', args = { 'Description', 'When the game calls this sound event.' } } |
Revision as of 08:43, 20 November 2020
This module implements {{Sound table}}
.
Usage
This module should not be invoked; {{Sound table}}
should be called. See template documentation for more information.
[view | edit | history | purge]The above documentation is transcluded from Module:Sound table/doc.
local p = {}
local emptyevent = [=[''None''<ref group="sound" name="emptyevent">Empty events do not have this parameter set.</ref>]=]
local nosubtitle = [=[''None''<ref group="sound" name="nosubtitle">[https://bugs.mojang.com/browse/MC-91042?jql=text%20~%20%22sound%20missing%22%20and%20resolution%20not%20in%20(%22Fixed%22%2C%20%22Cannot%20Reproduce%22%2C%20Duplicate%2C%20Invalid)%20and%20project%20%3D%20%22Minecraft%3A%20Java%20Edition%22 Reports on Mojira].</ref>]=]
local function vardefine( f, name, value )
f:callParserFunction( '#vardefine', name, value )
end
local function var( f, name, defaultvalue )
local result = f:callParserFunction( '#var', name, defaultvalue )
if result == '' then
return nil
end
return result
end
local function addCategory( nocat, value, categoryName )
if not nocat then
local category = [=[[[Category:Pages missing ]=] .. categoryName .. [=[]]]=]
value = value .. category
end
return value
end
function p.table( f )
local args = f
if f == mw.getCurrentFrame() then
args = require( 'Module:ProcessArgs' ).norm()
else
f = mw.getCurrentFrame()
end
local parent = f:getParent() or f
local result = ''
if not var( parent, 'soundstable' ) then
vardefine( parent, 'soundstable', 1 )
if args.nocat then
vardefine( parent, 'nocat', 1 )
end
local bedrockordungeons = false
if args.bedrock or args.dungeons then
bedrockordungeons = true
vardefine( parent, 'bedrockordungeons', 1 )
end
if args.bedrock then
vardefine( parent, 'bedrock', 1 )
end
if args.dungeons then
vardefine( parent, 'dungeons', 1 )
end
result = result .. [=[<table class="wikitable">]=]
local headerrow = mw.html.create( 'tr' )
local headings = { 'Sound' }
if not bedrockordungeons then
table.insert( headings, '[[Subtitle]]' )
end
if not args.dungeons then
if args.bedrock then
local menu = 'Audio'
local upcoming = parent:expandTemplate{ title = 'upcoming', args = { 'Bedrock 1.16.200' } }
else
local menu = 'Music and Sounds'
end
local sourceheading = parent:expandTemplate{ title = 'abbr', args = { 'Source', 'The category this sound falls into; what volume slider controls this sound in the ' .. menu .. ' menu.' } }
table.insert( headings, sourceheading .. upcoming )
end
local descriptionheading = parent:expandTemplate{ title = 'abbr', args = { 'Description', 'When the game calls this sound event.' } }
table.insert( headings, descriptionheading )
table.insert( headings, args.dungeons and 'File' or '[[Namespaced ID]]')
if not bedrockordungeons then
table.insert( headings, 'Translation key' )
end
if not args.dungeons then
table.insert( headings, 'Volume' )
table.insert( headings, 'Pitch' )
end
if not bedrockordungeons then
table.insert( headings, 'Attenuation<br>distance' )
end
for i, header in ipairs( headings ) do
headerrow
:tag( 'th' )
:wikitext( header )
end
result = result .. tostring( headerrow )
end
-- Header variables
local nocat = var( parent, 'nocat' )
local bedrockordungeons = var( parent, 'bedrockordungeons' )
local bedrock = var( parent, 'bedrock' )
local dungeons = var( parent, 'dungeons' )
local cells = {}
local sound = ''
if args.sound == '-' then
sound = '-'
elseif args.sound == nil then
sound = addCategory( nocat, '?', 'sounds' )
else
-- First parameter is empty because we don't want a sound name
local sounds = { '', args.sound }
for count = 2, 20 do
local index = 'sound' .. count
if args[index] then
table.insert( sounds, args[index] )
end
end
sound = parent:expandTemplate{ title = 'Sound', args = sounds }
end
table.insert( cells, sound )
if not bedrockordungeons then
local subtitle = args.subtitle
if args.subtitle == '-' then
subtitle = parent:preprocess( nosubtitle )
elseif sound == '-' then
subtitle = parent:preprocess( emptyevent )
elseif args.translationkey == '-' then
local content = parent:expandTemplate{ title = 'bug', args = { args.subtitle } }
subtitle = [=[''None'']=] .. parent:extensionTag( 'ref', content, { group = 'sound', name = 'bug' .. args.subtitle } )
elseif args.subtitle ~= nil then
subtitle = args.subtitle
else
subtitle = addCategory( nocat, '?', 'subtitles' )
end
table.insert( cells, subtitle )
end
if not dungeons then
local source = args.source or addCategory( nocat, '?', 'sound source' )
table.insert( cells, source )
end
local desc = args.description or addCategory( nocat, '?', 'sound description' )
table.insert( cells, desc )
local id
if args.id then
id = parent:preprocess( [=[{{nowrap|{{code|]=] .. args.id .. [=[}}}}]=])
else
id = addCategory( nocat, '?', 'sound ID' )
end
table.insert( cells, id )
if not bedrockordungeons then
local translationkey
if sound == '-' then
translationkey = parent:preprocess( emptyevent )
elseif args.subtitle == '-' then
translationkey = parent:preprocess( nosubtitle )
elseif args.translationkey == '-' then
local content = parent:expandTemplate{ title = 'bug', args = { args.subtitle } }
translationkey = [=[''None'']=] .. parent:extensionTag( 'ref', content, { group = 'sound', name = 'bug' .. args.subtitle } )
elseif args.translationkey ~= nil then
translationkey = parent:preprocess( [=[{{nowrap|{{code|]=] .. args.translationkey .. [=[}}}}]=])
else
translationkey = addCategory( nocat, '?', 'subtitle key' )
end
table.insert( cells, translationkey )
end
if not dungeons then
table.insert( cells, args.volume or addCategory( nocat, '?', 'sound volume' ) )
table.insert( cells, args.pitch or addCategory( nocat, '?', 'sound pitch' ) )
end
if not bedrockordungeons then
table.insert( cells, args.distance or addCategory( nocat, '?', 'sound attenuation distance' ) )
end
local row = mw.html.create( 'tr' )
for i, cell in ipairs( cells ) do
row
:tag( 'td' )
:wikitext( cell )
end
result = result .. tostring( row )
if args.foot then
-- Reset the variables we used
vardefine(parent, 'soundstable', '')
vardefine(parent, 'nocat', '')
vardefine(parent, 'bedrock', '')
vardefine(parent, 'dungeons', '')
vardefine(parent, 'bedrockordungeons', '')
-- Add table ending
result = result .. [=[</table>]=] .. parent:expandTemplate{ title = 'notelist', args = { 'sound' } }
end
return tostring( result )
end
return p