|
|
(18 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| local p = {}; | | local p = {}; |
| local data = mw.loadJsonData("Data:AttributeData.json") | | local attributes_data = mw.loadJsonData("Data:AttributeData.json") |
| local hero_data_module = require('Module:HeroData') | | local category_data = { --category specific parameters |
| | | ["Weapon"] = { |
| | unlocalized_name = "CitadelCategoryWeapon", |
| | rgb = "213, 144, 63" |
| | }, |
| | ["Vitality"] = { |
| | unlocalized_name = "CitadelCategoryArmor", |
| | rgb = "116, 176, 28" |
| | }, |
| | ["Spirit"] = { |
| | unlocalized_name = "CitadelCategoryTech", |
| | rgb = "194, 136, 240" |
| | }, |
| | } |
| | |
| | function p.get_category_data() |
| | return category_data |
| | end |
|
| |
|
| -- returns the table of a specific item | | -- returns the table of a specific item |
| function get_json_item(name) | | function get_json_item(name) |
| for i,v in pairs(data) do | | for i,v in pairs(attributes_data) do |
| if (i == name) then | | if (i == name) then |
| return v | | return v |
Line 14: |
Line 30: |
| end | | end |
|
| |
|
| --Call {{Lang}} on a given unlocalized string using key (not label)
| |
| function call_lang(unlocalized)
| |
| local template_title = mw.title.new("Template:Lang")
| |
| local template_args = {}
| |
| local template_call
| |
|
| |
|
| template_args["key"] = unlocalized
| |
|
| |
| local template_call = mw.getCurrentFrame():expandTemplate{ title = template_title, args = template_args }
| |
| return template_call
| |
| end
| |
|
| |
|
| --{{#invoke:AttributeData|create_stat_boxes|HERO_NAME}}
| | |
| --Creates {{StatBox}}'s' for the 3 categories Weapon, Vitality, Spirit
| | |
| p.create_stat_boxes = function(frame)
| | |
| local hero_name = frame.args[1]
| |
| if(hero_name == nil) then return "Hero parameter missing" end
| |
|
| |
| -- Use expandTemplate to evaluate the Infobox_hero template
| |
| local template_title = mw.title.new("Template:StatBox") --name of the template
| |
| local template_calls = "" --all template calls concatenated
| |
| local template_call --current template call
| |
| local template_args = {} --current template arguments
| |
| local cell_values --current cell values
| |
| local cell_value --current cell value
| |
| local label --current stat's label
| |
| local postfix --current stat's postfix
| |
| local alternate_name --current stat's alternate name, used to locate the stat in hero data
| |
| local stat_value --current stat's numerical value in the hero data
| |
| local hero_datas = mw.loadJsonData("Data:HeroData.json")
| |
| local hero_data = hero_data_module.get_json_item(hero_name)
| |
| if (hero_data == nil) then return "Hero Not Found" end
| |
|
| |
| for category, stats in pairs(data) do
| |
| template_args["box_name"] = "CitadelCategoryWeapon"
| |
| template_args["box_rgb"] = "213, 144, 63"
| |
| template_args["num_cols"] = "2"
| |
| cell_values = ""
| |
|
| |
| -- Determine cell values
| |
| for stat_name, stat_data in pairs(stats) do
| |
| alternate_name = stat_data["alternate_name"]
| |
|
| |
| -- check if the stat's alternate_name is in hero data
| |
| stat_value = hero_data[stat_name]
| |
| if (stat_value ~= nil) then
| |
| -- get label and postfix
| |
| label = call_lang(stat_data["label"])
| |
| postfix = stat_data["postfix"]
| |
| if (postfix == nil) then
| |
| postfix = ""
| |
| else
| |
| postfix = call_lang(postfix)
| |
| end
| |
|
| |
| -- Set cell value as "Icon StatvaluePostfix Statname,"
| |
| cell_value = "[[File:Bullet damage.png|15px]]" .. " " .. stat_value .. postfix .. " " .. label .. ","
| |
|
| |
| cell_values = cell_values .. cell_value --add value to values list
| |
| end
| |
| end
| |
| template_args["cell_values"] = cell_values
| |
|
| |
|
| |
|
| |
| -- Write current call
| |
| template_call = mw.getCurrentFrame():expandTemplate{ title = template_title, args = template_args }
| |
|
| |
| -- Add call to the set of calls
| |
| template_calls = template_calls .. "\n" .. template_call
| |
| end
| |
|
| |
| return template_calls
| |
| end
| |
|
| |
|
| return p | | return p |
Documentation for this module may be created at Module:AttributeData/doc
local p = {};
local attributes_data = mw.loadJsonData("Data:AttributeData.json")
local category_data = { --category specific parameters
["Weapon"] = {
unlocalized_name = "CitadelCategoryWeapon",
rgb = "213, 144, 63"
},
["Vitality"] = {
unlocalized_name = "CitadelCategoryArmor",
rgb = "116, 176, 28"
},
["Spirit"] = {
unlocalized_name = "CitadelCategoryTech",
rgb = "194, 136, 240"
},
}
function p.get_category_data()
return category_data
end
-- returns the table of a specific item
function get_json_item(name)
for i,v in pairs(attributes_data) do
if (i == name) then
return v
end
end
return nil
end
return p