return function(name, basalt) local base = basalt.getObject("ChangeableObject")(name, basalt) local objectType = "Switch" base:setSize(4, 1) base:setValue(false) base:setZIndex(5) local bgSymbol = colors.black local inactiveBG = colors.red local activeBG = colors.green local object = { getType = function(self) return objectType end, setSymbol = function(self, col) bgSymbol = col return self end, getSymbol = function(self) return bgSymbol end, setActiveBackground = function(self, col) activeBG = col return self end, getActiveBackground = function(self) return activeBG end, setInactiveBackground = function(self, col) inactiveBG = col return self end, getInactiveBackground = function(self) return inactiveBG end, load = function(self) self:listenEvent("mouse_click") end, mouseHandler = function(self, ...) if (base.mouseHandler(self, ...)) then self:setValue(not self:getValue()) self:updateDraw() return true end end, draw = function(self) base.draw(self) self:addDraw("switch", function() local parent = self:getParent() local bgCol,fgCol = self:getBackground(), self:getForeground() local w,h = self:getSize() if(self:getValue())then self:addBackgroundBox(1, 1, w, h, activeBG) self:addBackgroundBox(w, 1, 1, h, bgSymbol) else self:addBackgroundBox(1, 1, w, h, inactiveBG) self:addBackgroundBox(1, 1, 1, h, bgSymbol) end end) end, } object.__index = object return setmetatable(object, base) end