81 lines
2.3 KiB
Lua
81 lines
2.3 KiB
Lua
local basaltMon = require("basaltMon")
|
|
local max,min,sub,rep = math.max,math.min,string.sub,string.rep
|
|
|
|
|
|
return function(name, basalt)
|
|
local base = basalt.getObject("BaseFrame")(name, basalt)
|
|
local objectType = "MonitorFrame"
|
|
|
|
base:setTerm(nil)
|
|
local isMonitorGroup = false
|
|
local monGroup
|
|
|
|
local object = {
|
|
|
|
getType = function()
|
|
return objectType
|
|
end,
|
|
|
|
isType = function(self, t)
|
|
return objectType==t or base.isType~=nil and base.isType(t) or false
|
|
end,
|
|
|
|
getBase = function(self)
|
|
return base
|
|
end,
|
|
|
|
setMonitor = function(self, newMon)
|
|
if(type(newMon)=="string")then
|
|
local mon = peripheral.wrap(newMon)
|
|
if(mon~=nil)then
|
|
self:setTerm(mon)
|
|
end
|
|
elseif(type(newMon)=="table")then
|
|
self:setTerm(newMon)
|
|
end
|
|
return self
|
|
end,
|
|
|
|
setMonitorGroup = function(self, monGrp)
|
|
monGroup = basaltMon(monGrp)
|
|
self:setTerm(monGroup)
|
|
isMonitorGroup = true
|
|
return self
|
|
end,
|
|
|
|
render = function(self)
|
|
if(self:getTerm()~=nil)then
|
|
base.render(self)
|
|
end
|
|
end,
|
|
|
|
show = function(self)
|
|
base:getBase().show(self)
|
|
basalt.setActiveFrame(self)
|
|
for k,v in pairs(colors)do
|
|
if(type(v)=="number")then
|
|
termObject.setPaletteColor(v, colors.packRGB(term.nativePaletteColor((v))))
|
|
end
|
|
end
|
|
for k,v in pairs(colorTheme)do
|
|
if(type(v)=="number")then
|
|
termObject.setPaletteColor(type(k)=="number" and k or colors[k], v)
|
|
else
|
|
local r,g,b = table.unpack(v)
|
|
termObject.setPaletteColor(type(k)=="number" and k or colors[k], r,g,b)
|
|
end
|
|
end
|
|
return self
|
|
end,
|
|
}
|
|
|
|
object.mouseHandler = function(self, btn, x, y, isMon, monitor, ...)
|
|
if(isMonitorGroup)then
|
|
x, y = monGroup.calculateClick(monitor, x, y)
|
|
end
|
|
base.mouseHandler(self, btn, x, y, isMon, monitor, ...)
|
|
end
|
|
|
|
object.__index = object
|
|
return setmetatable(object, base)
|
|
end |