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

142
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() player:update()
pairDisplayTargetAlpha = player:pressed 'move' and 255 pairDisplayTargetAlpha = player:pressed 'move' and 1
or player:released 'move' and 255 or player:released 'move' and 1
or player:down 'move' and 100 or player:down 'move' and .5
or 0 or 0
if pairDisplayAlpha > pairDisplayTargetAlpha then if pairDisplayAlpha > pairDisplayTargetAlpha then
pairDisplayAlpha = pairDisplayAlpha - 1000 * dt pairDisplayAlpha = pairDisplayAlpha - 4 * dt
end end
if pairDisplayAlpha < pairDisplayTargetAlpha then if pairDisplayAlpha < pairDisplayTargetAlpha then
pairDisplayAlpha = pairDisplayTargetAlpha pairDisplayAlpha = pairDisplayTargetAlpha
end end
buttonDisplayTargetAlpha = player:pressed 'action' and 255 buttonDisplayTargetAlpha = player:pressed 'action' and 1
or player:released 'action' and 255 or player:released 'action' and 1
or player:down 'action' and 100 or player:down 'action' and .5
or 0 or 0
if buttonDisplayAlpha > buttonDisplayTargetAlpha then if buttonDisplayAlpha > buttonDisplayTargetAlpha then
buttonDisplayAlpha = buttonDisplayAlpha - 1000 * dt buttonDisplayAlpha = buttonDisplayAlpha - 4 * dt
end end
if buttonDisplayAlpha < buttonDisplayTargetAlpha then if buttonDisplayAlpha < buttonDisplayTargetAlpha then
buttonDisplayAlpha = buttonDisplayTargetAlpha buttonDisplayAlpha = buttonDisplayTargetAlpha
end end
updateTime = updateTime + (love.timer.getTime() - time) updateTime = updateTime + (love.timer.getTime() - time)
updates = updates + 1 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