update demo for love 11.x

This commit is contained in:
Andrew Minnich
2018-07-04 18:45:26 -04:00
parent a65aa51267
commit 776e6debd5

144
main.lua
View File

@@ -1,18 +1,18 @@
local baton = require 'baton' local baton = require 'baton'
local player = baton.new { local player = baton.new {
controls = { controls = {
left = {'key:left', 'axis:leftx-', 'button:dpleft'}, left = {'key:left', 'axis:leftx-', 'button:dpleft'},
right = {'key:right', 'axis:leftx+', 'button:dpright'}, right = {'key:right', 'axis:leftx+', 'button:dpright'},
up = {'key:up', 'axis:lefty-', 'button:dpup'}, up = {'key:up', 'axis:lefty-', 'button:dpup'},
down = {'key:down', 'axis:lefty+', 'button:dpdown'}, down = {'key:down', 'axis:lefty+', 'button:dpdown'},
action = {'key:x', 'button:a', 'mouse:1'}, action = {'key:x', 'button:a', 'mouse:1'},
}, },
pairs = { pairs = {
move = {'left', 'right', 'up', 'down'} move = {'left', 'right', 'up', 'down'}
}, },
joystick = love.joystick.getJoysticks()[1], joystick = love.joystick.getJoysticks()[1],
deadzone = .33, deadzone = .33,
} }
local pairDisplayAlpha = 0 local pairDisplayAlpha = 0
@@ -24,82 +24,82 @@ local updates = 0
local updateTime = 0 local updateTime = 0
function love.update(dt) function love.update(dt)
local time = love.timer.getTime() local time = love.timer.getTime()
player:update()
pairDisplayTargetAlpha = player:pressed 'move' and 255 player:update()
or player:released 'move' and 255
or player:down 'move' and 100
or 0
if pairDisplayAlpha > pairDisplayTargetAlpha then
pairDisplayAlpha = pairDisplayAlpha - 1000 * dt
end
if pairDisplayAlpha < pairDisplayTargetAlpha then
pairDisplayAlpha = pairDisplayTargetAlpha
end
buttonDisplayTargetAlpha = player:pressed 'action' and 255 pairDisplayTargetAlpha = player:pressed 'move' and 1
or player:released 'action' and 255 or player:released 'move' and 1
or player:down 'action' and 100 or player:down 'move' and .5
or 0 or 0
if buttonDisplayAlpha > buttonDisplayTargetAlpha then if pairDisplayAlpha > pairDisplayTargetAlpha then
buttonDisplayAlpha = buttonDisplayAlpha - 1000 * dt pairDisplayAlpha = pairDisplayAlpha - 4 * dt
end end
if buttonDisplayAlpha < buttonDisplayTargetAlpha then if pairDisplayAlpha < pairDisplayTargetAlpha then
buttonDisplayAlpha = buttonDisplayTargetAlpha pairDisplayAlpha = pairDisplayTargetAlpha
end end
updateTime = updateTime + (love.timer.getTime() - time) buttonDisplayTargetAlpha = player:pressed 'action' and 1
updates = updates + 1 or player:released 'action' and 1
or player:down 'action' and .5
or 0
if buttonDisplayAlpha > buttonDisplayTargetAlpha then
buttonDisplayAlpha = buttonDisplayAlpha - 4 * dt
end
if buttonDisplayAlpha < buttonDisplayTargetAlpha then
buttonDisplayAlpha = buttonDisplayTargetAlpha
end
updateTime = updateTime + (love.timer.getTime() - time)
updates = updates + 1
end end
function love.keypressed(key) function love.keypressed(key)
if key == 'escape' then if key == 'escape' then
love.event.quit() love.event.quit()
end end
if key == 'tab' then if key == 'tab' then
player.controls.action[1] = 'key:z' player.controls.action[1] = 'key:z'
end end
end end
local pairDisplayRadius = 128 local pairDisplayRadius = 128
function love.draw() function love.draw()
love.graphics.setColor(255, 255, 255) love.graphics.setColor(1, 1, 1)
love.graphics.print('Current active device: ' .. tostring(player:getActiveDevice())) love.graphics.print('Current active device: ' .. tostring(player:getActiveDevice()))
love.graphics.print('Average update time (us): ' .. math.floor(updateTime/updates*1000000), 0, 16) love.graphics.print('Average update time (us): ' .. math.floor(updateTime/updates*1000000), 0, 16)
love.graphics.print('Memory usage (kb): ' .. math.floor(collectgarbage 'count'), 0, 32) love.graphics.print('Memory usage (kb): ' .. math.floor(collectgarbage 'count'), 0, 32)
love.graphics.push() love.graphics.push()
love.graphics.translate(400, 300) love.graphics.translate(400, 300)
love.graphics.setColor(50, 50, 50, pairDisplayAlpha) love.graphics.setColor(.25, .25, .25, pairDisplayAlpha)
love.graphics.circle('fill', 0, 0, pairDisplayRadius) love.graphics.circle('fill', 0, 0, pairDisplayRadius)
love.graphics.setColor(255, 255, 255) love.graphics.setColor(1, 1, 1)
love.graphics.circle('line', 0, 0, pairDisplayRadius) love.graphics.circle('line', 0, 0, pairDisplayRadius)
local r = pairDisplayRadius * player.config.deadzone local r = pairDisplayRadius * player.config.deadzone
if player.config.squareDeadzone then if player.config.squareDeadzone then
love.graphics.rectangle('line', -r, -r, r*2, r*2) love.graphics.rectangle('line', -r, -r, r*2, r*2)
else else
love.graphics.circle('line', 0, 0, r) love.graphics.circle('line', 0, 0, r)
end end
love.graphics.setColor(150, 150, 150) love.graphics.setColor(.5, .5, .5)
local x, y = player:getRaw 'move' local x, y = player:getRaw 'move'
love.graphics.circle('fill', x*pairDisplayRadius, love.graphics.circle('fill', x*pairDisplayRadius,
y*pairDisplayRadius, 4) y*pairDisplayRadius, 4)
love.graphics.setColor(255, 255, 255) love.graphics.setColor(1, 1, 1)
local x, y = player:get 'move' x, y = player:get 'move'
love.graphics.circle('fill', x*pairDisplayRadius, love.graphics.circle('fill', x*pairDisplayRadius,
y*pairDisplayRadius, 4) y*pairDisplayRadius, 4)
love.graphics.setColor(255, 255, 255) love.graphics.setColor(1, 1, 1)
love.graphics.rectangle('line', -50, 150, 100, 100) love.graphics.rectangle('line', -50, 150, 100, 100)
love.graphics.setColor(255, 255, 255, buttonDisplayAlpha) love.graphics.setColor(1, 1, 1, buttonDisplayAlpha)
love.graphics.rectangle('fill', -50, 150, 100, 100) love.graphics.rectangle('fill', -50, 150, 100, 100)
love.graphics.pop() love.graphics.pop()
end end