Documentation for this module may be created at Module:Char Stat/doc
local util = require("Module:Util")
local data = require("Module:Char_Stat/data")
local Stat = {}
Stat.__index = Stat
function Stat:new(trion, attack, defense, mobility, skill, range, mechanical_operation, data_analysis,
parallel_processing, tactics, command, special_tactics)
local res = Stat
setmetatable(res, Stat)
res.trion = tonumber(trion) or 0
res.attack = tonumber(attack) or 0
res.defense = tonumber(defense) or 0
res.mobility = tonumber(mobility) or 0
res.skill = tonumber(skill) or 0
res.range = tonumber(range) or 0
res.mechanical_operation = tonumber(mechanical_operation) or 0
res.data_analysis = tonumber(data_analysis) or 0
res.parallel_processing = tonumber(parallel_processing) or 0
res.tactics = tonumber(tactics) or 0
res.command = tonumber(command) or 0
res.special_tactics = tonumber(special_tactics) or 0
return res
end
function Stat:from_table(table)
return Stat:new(unpack(table, 1, 12))
end
function Stat.total(self)
local t = 0
for _, v in pairs(self) do
if type(v) == "number" then
t = t + v
end
end
return t
end
function Stat:from_frame(frame)
local args, _ = util.get_args_and_pargs(frame)
return Stat:from_table(args)
end
---@param path string
function Stat:from_json(path)
local stats = {}
local data = mw.loadJsonData(path)
local i = 0
for _, v in ipairs(data) do
stats[i] = Stat:from_table(v)
i = i + 1
end
return stats
end
function Stat:from_data(path)
local stats = {}
local data = mw.loadData(path)
local i = 0
for _, v in ipairs(data) do
stats[i] = Stat:from_table(v)
i = i + i
end
return stats
end
return Stat