local default_G = {} for k, v in pairs(_G) do table.insert(default_G, k) end ease = require 'ease' dropdown = require 'dropdown' graph = require 'graph' require 'util' -- exports into global table -- rendering constants padding = 14 outerpadding = 22 margin = 6 dropdownWidth = 106 -- slider mixpoint = 0.5 oldmixpoint = 0.5 local mixpointtimer = 0 -- easter egg thing local mixpointspin = 0 -- rendering function love.load() dropdown.createDropdowns() end function love.update(dt) graph.update(dt) -- slider mixpointtimer = mix(mixpointtimer + math.abs(mixpoint - oldmixpoint), 0, math.min(dt * 8)) oldmixpoint = mix(oldmixpoint, mixpoint, math.min(dt * 20, 1)) if mixpointtimer > 2 then mixpointtimer = mixpointtimer - 2 mixpointspin = mixpointspin + 4 end mixpointspin = mix(mixpointspin, 0, dt * 3) dropdown.update(dt) end function love.draw() mode = dropdown.kget('mode').selected local sw, sh = love.graphics.getDimensions() local mx, my = love.mouse.getPosition() love.graphics.setColor(0.09, 0.09, 0.12, 1) love.graphics.rectangle('fill', 0, 0, sw, sh) love.graphics.setColor(0.08, 0.08, 0.1, 1) love.graphics.rectangle('line', 0, 0, sw, sh) love.graphics.setColor(1, 1, 1, 1) love.graphics.print('Box of Eases by oatmealine', outerpadding, sh - love.graphics.getFont():getHeight() - outerpadding) -- sliders -- yeah we do a lil' hardcoding if mode == 2 then local x, y, w, h = outerpadding, outerpadding * 2 + love.graphics.getFont():getHeight() + margin, dropdownWidth, 32 love.graphics.setColor(0.7, 0.7, 0.7, 0.4) love.graphics.line(x, y + h/2, x + w, y + h/2) local sx, sy = x + w * oldmixpoint, y + h/2 local ssize = h * 0.5 love.graphics.push() love.graphics.translate(sx, sy) love.graphics.rotate((mixpoint - oldmixpoint) * 4 + mixpointspin * math.pi * 2) local hovering = mx > sx - ssize/2 and mx < sx + ssize/2 and my > sy - ssize/2 and my < sy + ssize/2 and dropdown.openDropdown == 0 local dragging = mx > x and mx < x + w and my > y and my < y + h and love.mouse.isDown(1) and dropdown.openDropdown == 0 love.graphics.setColor(0, 0, 0, 1) if hovering or dragging then love.graphics.setColor(0.2, 0.2, 0.3, 1) end love.graphics.rectangle('fill', -ssize/2, -ssize/2, ssize, ssize) love.graphics.setColor(1, 1, 1, 1) love.graphics.rectangle('line', -ssize/2, -ssize/2, ssize, ssize) love.graphics.rotate((mixpoint - oldmixpoint) * -2) love.graphics.setColor(1, 1, 1, 1) love.graphics.printf(math.floor(mixpoint * 100)/100, -ssize * 6, ssize - 2, ssize * 12, 'center') love.graphics.pop() if dragging then mixpoint = (mx - x) / w graph.touchtimer = 1 dropdown.createDropdowns() end end -- dropdowns dropdown.render() -- graph graph.render() end function love.mousepressed(x, y, m) if dropdown.mousepressed(x, y, m) then return end end function love.mousereleased(x, y, m) if dropdown.mousereleased(x, y, m) then return end end function love.wheelmoved(x, y) if y == 0 then return end if dropdown.wheelmoved(x, y) then return end end function love.keypressed(key) if key == 'f6' then -- print all globals for k, v in pairs(_G) do for _, g in ipairs(default_G) do if g == k then goto continue end end print(k, v) ::continue:: end end end