summaryrefslogtreecommitdiffhomepage
path: root/not/Button.lua
diff options
context:
space:
mode:
authorAki <nthirtyone@gmail.com>2017-04-07 03:24:40 +0200
committerAki <nthirtyone@gmail.com>2017-04-07 03:24:40 +0200
commitd1a19fea50aefc9d7fb52568a5bdcfb56d75eccf (patch)
treed86118b2bae5125f6cecd28a5a7b6f46739f30a9 /not/Button.lua
parent54e85dd188af15cd5f3f5e08f5d3e69088a909b1 (diff)
downloadroflnauts-d1a19fea50aefc9d7fb52568a5bdcfb56d75eccf.zip
roflnauts-d1a19fea50aefc9d7fb52568a5bdcfb56d75eccf.tar.gz
roflnauts-d1a19fea50aefc9d7fb52568a5bdcfb56d75eccf.tar.bz2
Moved menu elements to /not/
Diffstat (limited to 'not/Button.lua')
-rw-r--r--not/Button.lua76
1 files changed, 76 insertions, 0 deletions
diff --git a/not/Button.lua b/not/Button.lua
new file mode 100644
index 0000000..91aca45
--- /dev/null
+++ b/not/Button.lua
@@ -0,0 +1,76 @@
+--- `Button`
+-- Menu element that can be activated by user.
+Button = {
+ parent = --[[not.Menu]]nil,
+ x = 0,
+ y = 0,
+ text = "",
+ focused = false,
+ sprite,
+ quads,
+ delay = 2,
+ parent,
+}
+
+-- `Button` is a child of `Element`.
+require "not.Element"
+Button.__index = Button
+setmetatable(Button, Element)
+
+function Button:new (parent)
+ local o = setmetatable({}, self)
+ o.parent = parent
+ o.sprite, o.quads = parent:getSheet()
+ return o
+end
+
+function Button:setText (text)
+ self.text = text or ""
+ return self
+end
+
+function Button:focus(next)
+ self.focused = true
+ return true
+end
+function Button:blur ()
+ self.focused = false
+end
+
+function Button:active () end
+function Button:isEnabled ()
+ return true
+end
+
+function Button:draw (scale)
+ local x,y = self:getPosition()
+ local quad = self.quads
+ local sprite = self.sprite
+ if self:isEnabled() then
+ love.graphics.setColor(255, 255, 255, 255)
+ else
+ love.graphics.setColor(140, 140, 140, 255)
+ end
+ love.graphics.draw(sprite, quad.button.normal, x*scale, y*scale, 0, scale, scale)
+ if self.focused then
+ love.graphics.draw(sprite, quad.arrow_l, (x+54+math.floor(self.delay))*scale, (y+5)*scale, 0, scale, scale)
+ love.graphics.draw(sprite, quad.arrow_r, (x-2-math.floor(self.delay))*scale, (y+5)*scale, 0, scale, scale)
+ end
+ love.graphics.setFont(Font)
+ love.graphics.printf(self.text, (x+2)*scale, (y+4)*scale, 54, "center", 0, scale, scale)
+end
+
+function Button:update (dt)
+ self.delay = self.delay + dt
+ if self.delay > Button.delay then -- Button.delay is initial
+ self.delay = self.delay - Button.delay
+ end
+end
+
+function Button:controlpressed (set, action, key)
+ if action == "attack" and self.focused and self:isEnabled() then
+ self:active()
+ end
+end
+
+return Button