40 lines
1.0 KiB
Lua
40 lines
1.0 KiB
Lua
return function(name, basalt)
|
|
local base = basalt.getObject("VisualObject")(name, basalt)
|
|
-- Base object
|
|
local objectType = "ChangeableObject"
|
|
|
|
local value
|
|
|
|
local object = {
|
|
setValue = function(self, _value, valueChangedHandler)
|
|
if (value ~= _value) then
|
|
value = _value
|
|
self:updateDraw()
|
|
if(valueChangedHandler~=false)then
|
|
self:valueChangedHandler()
|
|
end
|
|
end
|
|
return self
|
|
end,
|
|
|
|
getValue = function(self)
|
|
return value
|
|
end,
|
|
|
|
onChange = function(self, ...)
|
|
for _,v in pairs(table.pack(...))do
|
|
if(type(v)=="function")then
|
|
self:registerEvent("value_changed", v)
|
|
end
|
|
end
|
|
return self
|
|
end,
|
|
|
|
valueChangedHandler = function(self)
|
|
self:sendEvent("value_changed", value)
|
|
end,
|
|
}
|
|
|
|
object.__index = object
|
|
return setmetatable(object, base)
|
|
end |