Balatro/engine/object.lua
2024-02-27 23:47:25 +08:00

38 lines
666 B
Lua

--||--
--This Object implementation was taken from SNKRX (MIT license). Slightly modified, this is a very simple OOP base
Object = {}
Object.__index = Object
function Object:init()
end
function Object:extend()
local cls = {}
for k, v in pairs(self) do
if k:find("__") == 1 then
cls[k] = v
end
end
cls.__index = cls
cls.super = self
setmetatable(cls, self)
return cls
end
function Object:is(T)
local mt = getmetatable(self)
while mt do
if mt == T then
return true
end
mt = getmetatable(mt)
end
return false
end
function Object:__call(...)
local obj = setmetatable({}, self)
obj:init(...)
return obj
end