-- SageGearLevel.lua --sage = sage or {} --sage.class = sage.class or {} -- ------------------------------------------------------------------------------------------------------ --local rgbHash do -- local MAX_VALUE = 65536 -- arbitrary -- local function hash(s) -- local v = 0 -- for i=1,s:len() do -- v = 17 * v + s:byte(i) -- v = (v < MAX_VALUE) -- and v -- or math.floor(math.fmod(v, MAX_VALUE)) -- end -- return v / MAX_VALUE -- end -- -- function rgbHash(s) -- return -- 0.4 + 0.6 * hash("red" .. s), -- 0.4 + 0.6 * hash("green" .. s), -- 0.4 + 0.6 * hash("blue" .. s) -- end --end -- --local Class --local function newClass(arg) ---- ChatFrame1:AddMessage(arg.name .. " name=" .. tostring(arg.name) .. ", super=" .. tostring(arg.super)) -- local name = (arg and arg.name) or tostring(arg) -- local super = (arg and arg.super) or Class -- local class = setmetatable({super=super, name=name}, super) -- class.__index = class -- class.class = class -- class.r, class.g, class.b = rgbHash(name) -- function class:Debug(...) -- ChatFrame1:AddMessage(table.concat({name, ": ", ...}, " "), class.r, class.g, class.b) -- end -- function class:Print(...) -- ChatFrame1:AddMessage(string.format(...), class.r, class.g, class.b) -- end -- -- make sure there is an _Instantiate at each class so no super gets called twice -- function class:_Initialize(instance, ...) -- self.super:_Initialize(instance, ...) -- end -- -- return class --end -- --do -- local class = newClass{name="Class"} -- -- -- default. Many classes will override -- function class:New(...) -- self is class -- local class = self -- local instance = setmetatable({}, self) -- class:_Initialize(instance, ...) -- calls the subbiest class method first -- return instance -- end -- -- function class:NewClass(arg) -- return newClass(arg) -- end -- -- function class:_Initialize(instance) -- end -- -- Class = class --end -- --sage.class.Class = Class