some stuff actually works :D

This commit is contained in:
Elmārs Āboliņš 2020-08-11 22:41:55 +03:00
parent 3bd423243e
commit 02cd8eba19
3 changed files with 7 additions and 80 deletions

View File

@ -12,7 +12,7 @@ local type,pcall = type,pcall
setmetatable(element, {
__call = function(cls, ...)
local self
local func, loader, w, h, param = ...
local func, loader, param = ...
self = setmetatable({}, element)
self.parentFunc = func
@ -24,7 +24,7 @@ setmetatable(element, {
loader(f)
end
self:new(w, h, param)
self:new(param)
return self
end

View File

@ -1,72 +0,0 @@
--Internal event/zone/perf-log system
local signals = {}
signals.__index = signals
function signals.newController()
return setmetatable({
stack = {},
eventSubs = {},
zoneSubs = {},
startTime = 0,
totalTime = 0
}, signals)
end
function signals:push(name)
self.stack[#self.stack+1] = {name = name}
self.startTime = love.timer.getTime()
if self.zoneSubs[name] then
for i, e in ipairs(self.zoneSubs[name]) do
if e.on and e.func() then
end
end
end
end
function signals:pop()
local name = self.stack[#self.stack].name
if self.zoneSubs[name] then
for i, e in ipairs(self.zoneSubs[name]) do
if not e.on and e.func() then
end
end
end
self.totalTime = love.timer.getTime() - self.startTime
self.stack[#self.stack] = nil
end
function signals:emitEvent(name, content)
if self.eventSubs[name] then
for i,e in ipairs(self.eventSubs[name]) do
e.func(content)
end
end
end
function signals:onEvent(func, event)
if not self.eventSubs[event] then
self.eventSubs[event] = {}
end
self.eventSubs[event][#self.eventSubs[event]+1] = {func = func}
end
--on - true when new zone is pushed
-- false when zone is popped
function signals:onSignal(func, name, on)
if not self.zoneSubs[name] then
self.zoneSubs[name] = {}
end
self.zoneSubs[name][#self.zoneSubs[name]+1] = {func = func, on = on}
end
return signals

View File

@ -14,14 +14,13 @@ helium.elementBuffer = {}
helium.__index = helium
setmetatable(helium, {__call = function(s, chunk)
return {
__call = function(s, param, w, h)
return helium.element(chunk, nil, w, h, param)
end,
return setmetatable({
draw = function (param, x, y, w, h)
return helium.element.immediate(param, chunk, x, y, w, h)
end
}
},{__call = function(s, param)
return helium.element(chunk, nil, param)
end,})
end})
function helium.render()