Module:AbilityData/hero: Difference between revisions

Jump to navigation Jump to search
Sur (talk | contribs)
m get_hero_key and get_ability_num initial
Sur (talk | contribs)
m get_hero_key and get_ability_num now use AbilitiesData.json pre-emptively
Line 4: Line 4:
local util_module = require("Module:Utilities")
local util_module = require("Module:Utilities")
local heroes_data = mw.loadJsonData("Data:HeroData.json")
local heroes_data = mw.loadJsonData("Data:HeroData.json")
local abilities_data = mw.loadJsonData("Data:AbilitiesData.json")


local p = {}
local p = {}
Line 13: Line 14:
end
end
--O(1) search for it in hero data
local ability_data = abilities_data[ability_key]
for hero_key, hero_data in pairs(heroes_data) do
local hero_binds = ability_data["HeroBinds"]
local abilities_data = hero_data["BoundAbilities"]
if hero_binds == nil then return 'Ability ' .. ability_key .. ' is not bound by any heroes' end
for ability_num, ability_data in pairs(abilities_data) do
for _, hero_bind_data in ipairs(hero_binds) do
if ability_key == ability_data["Key"] then
return hero_bind_data["HeroKey"]
return hero_key
end
end
end
end
end
end
Line 30: Line 28:
end
end
--O(1) search for it in hero data
local ability_data = abilities_data[ability_key]
for hero_key, hero_data in pairs(heroes_data) do
local hero_binds = ability_data["HeroBinds"]
local abilities_data = hero_data["BoundAbilities"]
if hero_binds == nil then return 'Ability ' .. ability_key .. ' is not bound by any heroes' end
for ability_num, ability_data in pairs(abilities_data) do
for _, hero_bind_data in ipairs(hero_binds) do
if ability_key == ability_data["Key"] then
return hero_bind_data["Slot"]
return ability_num
end
end
end
end
end
end