|
|
Line 1: |
Line 1: |
| --[[
| |
| This module compares and outputs a button depending on the game or system
| |
| you've specified.
| |
| ]]--
| |
|
| |
|
| local b = {}
| |
| local result = {}
| |
| --[[
| |
| instead of typing the system over and over, these sys- variables have
| |
| the name of the system, so it avoids typos and needing to change the
| |
| comparisons manually.
| |
|
| |
| to make this consistent, for each new system prefix the variable with
| |
| 'sys-' (e.g 'local sysDonkeyKongStation = 'DK Station')
| |
| ]]--
| |
| local sysWiiU = 'Wii U'
| |
| local sysSwitch = 'Switch'
| |
|
| |
| function gameToConsole(game)
| |
| --[[
| |
| this function returns a console depending on what you set on the 'game'
| |
| argument. On the original template, the system and 'game' parameters were
| |
| pretty much the same, so the list needs also to include the console name
| |
| as well.
| |
|
| |
| As mentioned in the b.main() later, the inputs from the template are
| |
| automatically made lowercase, trimmed, and removes special characters
| |
| (such as dashes), so just make the keys like 'cometobrazil' or 'donkeykong'.
| |
|
| |
| don't forget the comma at the end of each item! It's like a basic JSON.
| |
| ]]--
| |
| local c = {}
| |
| c = {
| |
| ['wiiu'] = sysWiiU,
| |
| ['s'] = sysWiiU,
| |
| ['s1'] = sysWiiU,
| |
| ['splatoon'] = sysWiiU,
| |
| ['splatoon1'] = sysWiiU,
| |
|
| |
| ['switch'] = sysSwitch,
| |
| ['s2'] = sysSwitch,
| |
| ['splatoon2'] = sysSwitch,
| |
| ['s3'] = sysSwitch,
| |
| ['splatoon3'] = sysSwitch,
| |
| ['octoexpansion'] = sysSwitch,
| |
| ['oe'] = sysSwitch,
| |
|
| |
| ['splatoon 1'] = 'dummytest2',
| |
| ['dummy'] = 'dummy',
| |
| }
| |
|
| |
| -- just a fallback if no argument is passed to 'game'
| |
| if not c[game] then
| |
| return c[sysWiiU]
| |
| else
| |
| return c[game]
| |
| end
| |
| end
| |
|
| |
| function buttonOutput(system, button, frame)
| |
| --[[
| |
| this function creates a nested comparison list. So if system, which has
| |
| passed through gameToConsole() already (see on b.main() ), will check
| |
| each "parent" list with the 'system' argument, then the "children" lists,
| |
| with the 'button' argument. The 'frame' argument is just to pass the
| |
| frames from b.main() to this function.
| |
|
| |
| In fact, to avoid visual bloat, you could move this function to a subpage,
| |
| something like Module:Button/Output, because eventually this list will
| |
| grow more and more I imagine.
| |
| ]]--
| |
| local o = {}
| |
|
| |
| --[[
| |
| personally I would recommend the staff to adapt the Wii U buttons to
| |
| the Switch style (icons through CSS rather than images) to keep consistency.
| |
| The Switch's handheld icon uses an image instead of an icon, and doing
| |
| a whole if-else checking just for that would be quite annoying. Moving
| |
| the Wii U icons to the Switch style you're doing could remove the if-else
| |
| statement at the bottom as well.
| |
|
| |
| and as mentioned later in the b.main(), the button and system input from
| |
| the template/module is automatically trimmed and lowercase. Don't worry
| |
| about dashes or anything else.
| |
| ]]--
| |
| o = {
| |
| [sysWiiU] = {
| |
| ['a'] = '[[File:Wii U Icon A.png|28x28px|link=|A]]',
| |
| ['b'] = '[[File:Wii U Icon B.png|28x28px|link=|B]]',
| |
| ['dpad'] = '[[File:Wii U Icon D-Pad.png|28x28px|link=|D-Pad]]',
| |
| ['gamepad'] = '[[File:Wii U Icon Gamepad.png|28x28px|link=|Gamepad]]',
| |
| ['home'] = '[[File:Wii U Icon Home.png|28x28px|link=|Home]]',
| |
| ['l'] = '[[File:Wii U Icon L.png|28x28px|link=|L]]',
| |
| ['leftstick'] = '[[File:Wii U Icon LS.png|28x28px|link=|Left Stick]]',
| |
| ['ls'] = '[[File:Wii U Icon LS.png|28x28px|link=|Left Stick]]',
| |
| ['minus'] = '[[File:Wii U Icon Minus.png|28x28px|link=|Minus]]',
| |
| ['plus'] = '[[File:Wii U Icon Plus.png|28x28px|link=|Plus]]',
| |
| ['r'] = '[[File:Wii U Icon R.png|28x28px|link=|R]]',
| |
| ['rightstick'] = '[[File:Wii U Icon RS.png|28x28px|link=|Right Stick]]',
| |
| ['rs'] = '[[File:Wii U Icon RS.png|28x28px|link=|Right Stick]]',
| |
| ['x'] = '[[File:Wii U Icon X.png|28x28px|link=|X]]',
| |
| ['y'] = '[[File:Wii U Icon Y.png|28x28px|link=|Y]]',
| |
| ['z'] = frame:preprocess('{{Icon|S|Zapfish}}'),
| |
| ['zl'] = '[[File:Wii U Icon ZL.png|28x28px|link=|ZL]]',
| |
| ['zl1'] = frame:preprocess('{{Icon|S|ZL}}'),
| |
| ['zr'] = '[[File:Wii U Icon ZR.png|28x28px|link=|ZR]]',
| |
| ['zr1'] = frame:preprocess('{{Icon|S|ZR}}'),
| |
| },
| |
| [sysSwitch] = {
| |
| ['a'] = {class = 'switch-icon a', title = 'A'},
| |
| ['b'] = {class = 'switch-icon b', title = 'B'},
| |
| ['capture'] = {class = 'switch-icon capture', title = 'Capture'},
| |
| ['controlleroutline'] = {class = 'switch-icon controller-outline', title = 'Pro'},
| |
| ['dpad'] = {class = 'pro-icon d-pad', title = 'D-Pad'},
| |
| ['dpaddown'] = {class = 'pro-icon d-pad-down', title = 'D-Pad Down'},
| |
| ['dpadleft'] = {class = 'pro-icon d-pad-left', title = 'D-Pad Left'},
| |
| ['dpadright'] = {class = 'pro-icon d-pad-right', title = 'D-Pad Right'},
| |
| ['dpadup'] = {class = 'pro-icon d-pad-up', title = 'D-Pad Up'},
| |
| ['gyropitch'] = {class = 'pro-icon gyro-pitch', title = 'Gyro Pitch'},
| |
| ['gyroroll'] = {class = 'pro-icon gyro-roll', title = 'Gyro Roll'},
| |
| ['gyroyaw'] = {class = 'pro-icon gyro-yaw', title = 'Gyro Yaw'},
| |
| -- handheld uses an image, please change it to an icon like the others.
| |
| ['home'] = {class = 'switch-icon home', title = 'Home'},
| |
| ['l'] = {class = 'switch-icon l', title = 'L'},
| |
| ['leftstickall'] = {class = 'switch-icon left-stick-all', title = 'Left Stick All'},
| |
| ['leftstickclick'] = {class = 'switch-icon left-stick-click', title = 'Left Stick Click'},
| |
| ['leftstickdown'] = {class = 'switch-icon left-stick-down', title = 'Left Stick Down'},
| |
| ['leftstickleftright'] = {class = 'switch-icon left-stick-left-right', title = 'Left Stick Left-Right'},
| |
| ['leftstickleft'] = {class = 'switch-icon left-stick-left', title = 'Left Stick Left'},
| |
| ['leftstickright'] = {class = 'switch-icon left-stick-right', title = 'Left Stick Right'},
| |
| ['leftstickupdown'] = {class = 'switch-icon left-stick-up-down', title = 'Left Stick Up-Down'},
| |
| ['leftstickup'] = {class = 'switch-icon left-stick-up', title = 'Left Stick Up'},
| |
| ['leftstick'] = {class = 'switch-icon left-stick', title = 'Left Stick'},
| |
| ['ls'] = {class = 'switch-icon left-stick', title = 'Left Stick'},
| |
| ['minus'] = {class = 'switch-icon minus', title = 'Minus'},
| |
| ['plus'] = {class = 'switch-icon plus', title = 'Plus'},
| |
| ['pro'] = {class = 'pro-icon controller-outline', title = 'Pro'},
| |
| ['r'] = {class = 'switch-icon r', title = 'R'},
| |
| ['rightstickall'] = {class = 'switch-icon right-stick-all', title = 'Right Stick All'},
| |
| ['rightstickclick'] = {class = 'switch-icon right-stick-click', title = 'Right Stick Click'},
| |
| ['rightstickdown'] = {class = 'switch-icon right-stick-down', title = 'Right Stick Down'},
| |
| ['rightstickleftright'] = {class = 'switch-icon right-stick-left-right', title = 'Right Stick Left-Right'},
| |
| ['rightstickleft'] = {class = 'switch-icon right-stick-left', title = 'Right Stick Left'},
| |
| ['rightstickright'] = {class = 'switch-icon right-stick-right', title = 'Right Stick Right'},
| |
| ['rightstickupdown'] = {class = 'switch-icon right-stick-up-down', title = 'Right Stick Up-Down'},
| |
| ['rightstickup'] = {class = 'switch-icon right-stick-up', title = 'Right Stick Up'},
| |
| ['rightstick'] = {class = 'switch-icon right-stick', title = 'Right Stick'},
| |
| ['rs'] = {class = 'switch-icon right-stick', title = 'Right Stick'},
| |
| ['sl'] = {class = 'switch-icon sl', title = 'SL'},
| |
| ['sr'] = {class = 'switch-icon sr', title = 'SR'},
| |
| ['x'] = {class = 'switch-icon x', title = 'X'},
| |
| ['y'] = {class = 'switch-icon y', title = 'Y'},
| |
| ['zl'] = {class = 'switch-icon zl', title = 'ZL'},
| |
| ['zr'] = {class = 'switch-icon zr', title = 'ZR'},
| |
| },
| |
| }
| |
|
| |
| local panel
| |
|
| |
| if system ~= sysWiiU then
| |
| panel = '<span class="'.. o[system][button].class .. '" title="'.. o[system][button].title ..'"></span>'
| |
| return panel
| |
| else
| |
| return o[system][button]
| |
| end
| |
| end
| |
|
| |
| function b.main(frame)
| |
| -- the button input from the template
| |
| local input = frame:getParent().args[1] or 'a'
| |
| -- Wii U set as the default system
| |
| local game = frame:getParent().args['game'] or frame:getParent().args[2] or sysWiiU
| |
|
| |
| -- removing whitespace and special characters from 'input' and 'game'
| |
| input = mw.ustring.lower(mw.ustring.gsub(input, '[%p%c%s]', ''))
| |
| game = gameToConsole(mw.ustring.lower(mw.ustring.gsub(game, '[%p%c%s]', '')))
| |
|
| |
| table.insert(result, buttonOutput(game, input, frame))
| |
| return table.concat(result, '')
| |
| end
| |
|
| |
| return b
| |