something

This commit is contained in:
qfx 2020-02-12 02:05:42 +02:00
parent 5d707925c6
commit 445bc8c7dc
2 changed files with 15 additions and 31 deletions

View File

@ -67,7 +67,7 @@ local type,pcall = type,pcall
setmetatable(element,{ setmetatable(element,{
__call = function(cls, ...) __call = function(cls, ...)
local self local self
local func, loader = ... local func, loader, w, h, param = ...
if type(func)=='function' then if type(func)=='function' then
self = setmetatable({}, element) self = setmetatable({}, element)
self.parentFunc = func self.parentFunc = func
@ -80,7 +80,7 @@ setmetatable(element,{
loader(f) loader(f)
end end
self:new() self:new(w, h, param)
return self return self
end end
@ -91,13 +91,13 @@ function element:renderer() print('no renderer') end
--Control functions --Control functions
--The new function that should be used for element creation --The new function that should be used for element creation
function element:new() function element:new(w, h, param)
local dimensions local dimensions
--save the parameters --save the parameters
self.parameters = {} self.parameters = {}
--The element canvas --The element canvas
--self.canvas = nil self.baseParams = param
--Internal settings --Internal settings
self.settings = { self.settings = {
@ -113,8 +113,8 @@ function element:new()
self.baseView = { self.baseView = {
x = 0, x = 0,
y = 0, y = 0,
w = 10, w = w or 10,
h = 10, h = h or 10,
} }
self.view = setmetatable({},{ self.view = setmetatable({},{
@ -167,12 +167,14 @@ end
function element:reLoader(newFunc) function element:reLoader(newFunc)
self.inputContext:set() self.inputContext:set()
self.context:set()
self.inputContext:destroy() self.inputContext:destroy()
self.parentFunc = newFunc self.parentFunc = newFunc
self.renderer = self.parentFunc(self.parameters,self.state,self.view) self.renderer = self.parentFunc(self.parameters,self.state,self.view)
self.context:bubbleUpdate() self.context:bubbleUpdate()
self.context:unset()
self.inputContext:unset() self.inputContext:unset()
end end
@ -210,9 +212,11 @@ function element:setup()
self.canvas = newCanvas(self.view.w*1.25, self.view.h*1.25) self.canvas = newCanvas(self.view.w*1.25, self.view.h*1.25)
self.quad = newQuad(0, 0, self.view.w, self.view.h, self.view.w*1.25, self.view.h*1.25) self.quad = newQuad(0, 0, self.view.w, self.view.h, self.view.w*1.25, self.view.h*1.25)
self.inputContext:set() self.context:set()
self.inputContext:set()
self.renderer = self.parentFunc(self.parameters,self.state,self.view) self.renderer = self.parentFunc(self.parameters,self.state,self.view)
self.inputContext:unset() self.inputContext:unset()
self.context:unset()
self.settings.isSetup = true self.settings.isSetup = true
end end
@ -285,32 +289,12 @@ end
local insert = table.insert local insert = table.insert
--External functions --External functions
--Acts as the entrypoint for beginning rendering --Acts as the entrypoint for beginning rendering
---@param params any
---@param x number ---@param x number
---@param y number ---@param y number
---@param w number function element:draw(x, y)
---@param h number
function element:draw(params, x, y, w, h)
if not self.view.lock then if not self.view.lock then
--self.view.x = x or self.view.x
--self.view.y = y or self.view.y
--self.view.w = w or self.view.w
--self.view.h = h or self.view.h
if x then self.view.x = x end if x then self.view.x = x end
if y then self.view.y = y end if y then self.view.y = y end
if w then self.view.w = w end
if h then self.view.h = h end
end
if params then
if type(params)=='table' and self.baseParams then
helium.utils.tableMerge(params, self.parameters)
elseif self.baseParams==nil then
self.baseParams = params
else
self.parameters = params
end
end end
if not self.settings.isSetup then if not self.settings.isSetup then

View File

@ -57,11 +57,11 @@ debugLoader.loader = function(path,returnLevel)
setfuncs[#setfuncs+1] = setFunc setfuncs[#setfuncs+1] = setFunc
end end
local factory = function() local factory = function(param,w,h)
return helium.element(ret, reloader) return helium.element(ret, reloader, w, h, param)
end end
elements[path] = { fileContents, func, ret, path, lastLoaded, factory, setfuncs = setfuncs } elements[path] = {fileContents, func, ret, path, lastLoaded, factory, setfuncs = setfuncs}
return elements[path][level] return elements[path][level]
end end