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
