diff options
Diffstat (limited to 'button.lua')
-rw-r--r-- | button.lua | 34 |
1 files changed, 24 insertions, 10 deletions
@@ -2,26 +2,37 @@ -- Button used in `Menu` Button = { - text = "button", + text = "", focused = false, x = 0, - y = 0 + y = 0, + sprite, + quad = love.graphics.newQuad(0, 0, 58,15, 68,15), + arrow_l = love.graphics.newQuad(58, 0, 5, 5, 68,15), + arrow_r = love.graphics.newQuad(63, 0, 5, 5, 68,15), + delay = 0, + parent } -function Button:new(text) +function Button:new(parent) local o = {} setmetatable(o, self) self.__index = self - o.text = text or self.text + o.parent = parent + self.sprite = love.graphics.newImage("assets/menu.png") return o end +function Button:setText(text) + self.text = text or "" + return self +end function Button:setPosition(x, y) self.x = x or 0 self.y = y or 0 return self end function Button:getPosition() return self.x,self.y end -function Button:focus() +function Button:focus(next) self.focused = true end function Button:blur() @@ -36,14 +47,17 @@ function Button:set(name, func) end function Button:draw(scale) local x,y = self:getPosition() + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(self.sprite, self.quad, x*scale, y*scale, 0, scale, scale) if self.focused then - love.graphics.setColor(255, 128, 0, 255) - else - love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(self.sprite, self.arrow_l, (x+54+math.floor(self.delay))*scale, (y+5)*scale, 0, scale, scale) + love.graphics.draw(self.sprite, self.arrow_r, (x-1-math.floor(self.delay))*scale, (y+5)*scale, 0, scale, scale) end - love.graphics.print(self.text, x*scale, y*scale, 0, scale, scale) + love.graphics.printf(string.upper(self.text), (x+2)*scale, (y+4)*scale, 54, "center", 0, scale, scale) +end +function Button:update(dt) + self.delay = (self.delay + dt)%2 end -function Button:update(dt) end function Button:controlpressed(set, action, key) if action == "attack" and self.focused then self:active() |