|
|
Line 1: |
Line 1: |
| local p = {}
| |
| local heroes_data = mw.loadJsonData("Data:HeroData.json")
| |
| local hero_release_module = require('Module:HeroData/release')
| |
| local lang_module = require('Module:Lang')
| |
|
| |
|
| -- for [[Template:Deadlock_Wiki/Heroes]] on home page, i.e. [[Template:Hero card2]]
| |
| function p.get_hero_nav_cards(frame)
| |
| local in_herolabs = frame.args['in_herolabs'] --true or false
| |
| local text_size = frame.args['text_size']
| |
| local card_size = frame.args['card_size']
| |
| local sticker_size = frame.args['sticker_size']
| |
| local herolabs_text_size = frame.args['herolabs_text_size']
| |
| local debug_mode = frame.args['debug_mode']
| |
| local lang_code = frame.args['lang_code']
| |
|
| |
| -- Turn debug_mode from string to bool, default to false
| |
| if debug_mode == nil then
| |
| debug_mode = false
| |
| elseif debug_mode == 'true' then
| |
| debug_mode = true
| |
| elseif debug_mode == 'false' then
| |
| debug_mode = false
| |
| end
| |
|
| |
| if in_herolabs ~= 'true' and in_herolabs ~= 'false' then
| |
| return 'in_herolabs must be either true or false'
| |
| end
| |
|
| |
| local subpage = ''
| |
| if lang_code ~= nil and lang_code ~= 'en' then subpage = '/' .. lang_code end
| |
|
| |
| --Iterate heroes
| |
| local heroes = {}
| |
| for hero_key, hero_data in pairs(heroes_data) do
| |
| if hero_data["Name"] ~= nil then
| |
| -- if herolabs is requested, only needs to have herolabs=true
| |
| -- otherwise, needs to be not disabled, in development, nd herolabs is nil or false
| |
| local this_hero_status = hero_release_module.get_hero_release_status(hero_key)
| |
|
| |
| if this_in_herolabs == nil then this_in_herolabs = false end
| |
|
| |
| if ((in_herolabs == 'true' and this_hero_status == 'HeroLabs') or
| |
| (in_herolabs == 'false' and this_hero_status == 'Released')) then
| |
|
| |
| local is_recommended = hero_data['IsRecommended']
| |
| if is_recommended == nil then
| |
| is_recommended = false
| |
| end
| |
|
| |
| local sub_page_str = ''
| |
|
| |
|
| |
| local hero_str = '|name=' .. lang_module.get_string(hero_key, nil, 'en') .. '|link=' .. lang_module.get_string(hero_key, 'en') .. '|subpage=' .. subpage .. '|recommended=' .. tostring(is_recommended)
| |
|
| |
| table.insert(heroes, hero_str)
| |
| end
| |
| end
| |
| end
| |
|
| |
| --Order list alphabetically
| |
| table.sort(heroes) --O(nlogn)
| |
|
| |
| --Add each item to output
| |
| local ret = ''
| |
| for index, hero_name in ipairs(heroes) do
| |
| ret = ret .. '{{Hero card2' .. hero_name
| |
| ret = ret .. '|text_size=' .. text_size
| |
| ret = ret .. '|herolabs=' .. in_herolabs
| |
| ret = ret .. '|card_size=' .. card_size
| |
| ret = ret .. '|sticker_size=' .. sticker_size
| |
| ret = ret .. '|herolabs_text_size=' .. herolabs_text_size
| |
| ret = ret .. '}} '
| |
| end
| |
|
| |
| --Remove the last space
| |
| ret = string.sub(ret, 1, -(string.len(' '))-1)
| |
|
| |
|
| |
| if debug_mode then
| |
| return ret
| |
| else -- evaluate wikitext if not in debug mode
| |
| return frame:preprocess(ret)
| |
| end
| |
| end
| |
| return p
| |
Overview
Generates hero navigation cards
Functions
get_hero_nav_cards
For Template:Hero Navbox on Heroes, individual hero pages like Abrams, and the home page.
Examples
First with debug_mode on, to help visualize what the output's source looks like.
{{#invoke:HeroData/nav|get_hero_nav_cards
|in_herolabs=true
|text_size=11
|card_size=card_size|88
|sticker_size=sticker_size|30
|herolabs_text_size=herolabs_text_size|6
|debug_mode=true
}}
Script error: The module returned a nil value. It is supposed to return an export table.
Now with debug_mode defaulted to false (off) to see actual visual output.
{{#invoke:HeroData/nav|get_hero_nav_cards
|in_herolabs=true
|text_size=11
|card_size=88
|sticker_size=30
|herolabs_text_size=6
}}
Script error: The module returned a nil value. It is supposed to return an export table.
Parameters
- text_size - Font size of the hero name
- card_size - Size of the hero card
- sticker_size - Size of the Recommended or Hero lab stickers that appear in the top right corner
- herolabs_text_size - Font size of the 'Hero Labs' text that appears for heroes in Hero Labs
- debug_mode - (OPTIONAL) Defaults to false. With true, the output is raw wikitext source that isn't processed, allowing to see more clearly what is ran.
debug_mode is the only optional parameter. All other parameters are required. Template:Hero card2 utilizes this with some default values, see there for suggested values.