--Character class
Character = {}
Character.__index = Character
function Character:new()
local self = {}
setmetatable(self, Character)
self.name = "Unknown"
self.level = "Unknown"
self.class = "Unknown"
self.race = "Unknown"
return self
end
function Character:load(name, level, class, race)
if name ~= nil then self.name = name end
if level ~= nil then self.level = level end
if class ~= nil then self.class = class end
if race ~= nil then self.race = race end
return self
end
--Util functions
Util = {}
function Util:concat(aString, length)
local blanks = string.rep(" ", length)
local s = aString..blanks
return string.sub(s, 0, length)
end
function Util:printtable(items, vars)
local div = "|"
for i, var in ipairs(vars) do
local maxlength = 0
for i, item in ipairs(items) do
local len = string.len(item[var.varname])
if len > maxlength then
maxlength = len
end
end
div = div..string.rep("-", maxlength).."|"
var.maxlength = maxlength
end
print(div)
local totlen = 0
local numvars = 0
io.write("|")
for i, var in ipairs(vars) do
io.write(Util:concat(var.name, var.maxlength).."|")
totlen = totlen + var.maxlength
numvars = numvars + 1
end
print()
print(div)
for i, item in ipairs(items) do
io.write("|")
for i, var in ipairs(vars) do
io.write(Util:concat(item[var.varname], var.maxlength).."|")
end
print()
end
print(div)
end
--Var class
Var = {}
Var.__index = Var
function Var:new()
local self = {}
setmetatable(self, Var)
return self;
end
function Var:load(varname, name)
self.varname = varname
self.name = name
return self
end
--Test chars
local chars = {
Character:new():load("Painrc", 25, "Rogue", "Orc" ),
Character:new():load("Geoff", 90, "Mage", "Gnome"),
Character:new():load("Anon", nil, "/b/", "4chan")
}
--Print test chars
Util:printtable(chars, {
Var:new():load("name", "Name" ),
Var:new():load("level", "Level"),
Var:new():load("class", "Class"),
Var:new():load("race", "Race" )
})
for i,char in ipairs(chars) do
print(char.name, char.isHorde())
end
This post has been edited by Duta: 29 October 2012 - 10:43 AM

New Topic/Question
Reply



MultiQuote







|