interfaceButton = {type = "Button"} -- centered buttons function interfaceButton:New(x,y,w,h,table_values,value,style) o = {} o.pos = { x = x, y = y } o.size = { w = w, h = h } o.values = table_values or {false,true} o.value = value or 1 o.target_variable = o.values[o.value] o.clicked = false o.style = { text = style.text or nil, color = style.color or {1,1,1}, color2 = style.color2 or {0,0,0}, --color3 = style.color3 or style.color2 or {0,0,0}, alpha = style.alpha or 1, scale = style.scale or 1, scale_x = style.scale_x or 1, scale_y = style.scale_y or 1, scale_proportion = 1 } o.style.unselected = { scale_proportion = o.style.scale_proportion } o.style.selected = { scale_proportion = 1.5 } AddElement(o) setmetatable(o, self) self.__index = self return o end function interfaceButton:getVariable() return self.target_variable end function interfaceButton:checkMouse(mouse_x, mouse_y) if not self.clicked and mouse_x < self.pos.x + self.size.w/2 and mouse_x > self.pos.x - self.size.w/2 and mouse_y < self.pos.y + self.size.h/2 and mouse_y > self.pos.y - self.size.h/2 then self.style.scale_proportion = o.style.selected.scale_proportion if love.mouse.isDown(1) then self.clicked = true self.value = self.value + 1 if self.value > #self.values then self.value = 1 end self.target_variable = self.values[self.value] end elseif not love.mouse.isDown(1) then self.style.scale_proportion = o.style.unselected.scale_proportion self.clicked = false end end function interfaceButton:Draw() local c1, c2, c3, a = love.graphics.getColor() love.graphics.setColor(self.style.color[1],self.style.color[2],self.style.color[3],self.style.alpha) love.graphics.rectangle( "fill", self.pos.x-(self.size.w/2)*self.style.scale_x*self.style.scale_proportion, self.pos.y-(self.size.h/2)*self.style.scale_y*self.style.scale_proportion, self.size.w *self.style.scale_x*self.style.scale_proportion, self.size.h *self.style.scale_y*self.style.scale_proportion) love.graphics.setColor(self.style.color2[1],self.style.color2[2],self.style.color2[3],self.style.alpha) love.graphics.rectangle( "line", self.pos.x-(self.size.w/2)*self.style.scale_x*self.style.scale_proportion, self.pos.y-(self.size.h/2)*self.style.scale_y*self.style.scale_proportion, self.size.w *self.style.scale_x*self.style.scale_proportion, self.size.h *self.style.scale_y*self.style.scale_proportion) if self.style.text ~= nil then love.graphics.print(self.style.text,self.pos.x,self.pos.y) else love.graphics.print(tostring(self.target_variable),self.pos.x,self.pos.y) end love.graphics.setColor(c1,c2,c3,a) end