diff --git a/NCZ.otf b/NCZ.otf new file mode 100644 index 0000000..ef8409c Binary files /dev/null and b/NCZ.otf differ diff --git a/slider.lua b/slider.lua new file mode 100644 index 0000000..3c7470f --- /dev/null +++ b/slider.lua @@ -0,0 +1,66 @@ +local Object = require "classic" +local Slider = Object:extend() + +active = false + +function Slider:new(x, y, w, h, limit) + self.x = x or 0 + self.y = y or 0 + self.w = w or 0 + self.h = h or 0 + self.knobw = 8 + self.knobh = 16 + self.knobx = self.x + self.knoby = self.y + self.active = false + self.level = 0 + self.limit = 255 +end + +function round(n) + return math.floor(n + 0.5) +end + +function Slider:update(dt) + mousex, mousey = love.mouse.getPosition() + self.level = round(((self.knobx-self.x)/self.w)*255) + + if self.level < 0 then + self.knobx = self.x + self.level = 0 + elseif self.level > 255 then + self.knobx = self.x+self.w + self.level = 255 + end + + if love.mouse.isDown(1) + and mousex >= self.x + and mousex <= self.x+self.w + and mousey >= self.y + and mousey <= self.y+self.h + and not active + and self.active == false then + self.active = true + active = true + elseif love.mouse.isDown(1) == false then + self.active = false + active = false + end + if self.active then + self.knobx = round( + (math.min (math.max(self.x, mousex), self.x+self.w) + )/(self.w/255) + )*(self.w/255) + end +end + +function Slider:draw() + love.graphics.setColor(1, 1, 1) + love.graphics.rectangle("line", self.x, self.y, self.w, self.h) + love.graphics.setColor(237/255, 86/255, 83/255) + love.graphics.rectangle("fill", self.knobx-(self.knobw/2), self.knoby-(self.knobh/3), self.knobw, self.knobh) + love.graphics.setColor(1, 1, 1) + love.graphics.print(self.level, self.knobx-4, self.knoby-20) +end + +return Slider