Rocket-Bytes/Source/Saws.lua
2022-04-26 20:40:39 -06:00

72 lines
No EOL
1.8 KiB
Lua

import "CoreLibs/animator"
local gfx <const> = playdate.graphics
local imgSaw = gfx.image.new("gfx/sawblade")
local imgTarget = gfx.image.new("gfx/target")
assert(imgSaw)
assert(imgTarget)
local blades = {}
function loadBlades(_blades)
for i = 1, #_blades,1 do
local b = _blades[i]
b.start = playdate.geometry.point.new(b.start.x,b.start.y)
b.ends = playdate.geometry.point.new(b.ends.x,b.ends.y)
b.saw = gfx.sprite.new(imgSaw)
b.saw:moveTo(b.start)
b.saw:setCollideRect(0,0,16,16)
b.saw:add()
local a = gfx.animator.new(b.speed*1000, b.start, b.ends)
b.saw:setAnimator(a)
b.t1 = gfx.sprite.new(imgTarget)
b.t1:moveTo(b.start)
b.t2 = gfx.sprite.new(imgTarget)
b.t2:moveTo(b.ends)
b.t1:add()
b.t2:add()
blades[i] = b
end
end
function loadSpins(_spins)
for i = 1, #_spins, 1 do
local s = _spins[i]
if s.middle then
s.middle = gfx.sprite.new(imgSaw)
s.middle:setCollideRect(0,0,16,16)
else
s.middle = gfx.sprite.new(imgTarget)
end
s.middle:moveTo(s.x,s.y)
s.middle:add()
end
end
function updateSaws()
for b=1, #blades, 1 do
b = blades[b]
local pos = playdate.geometry.point.new(b.saw:getPosition())
if pos == b.start then
local a = gfx.animator.new(b.speed*1000, b.start, b.ends)
b.saw:setAnimator(a)
elseif pos == b.ends then
local a = gfx.animator.new(b.speed*1000, b.ends, b.start)
b.saw:setAnimator(a)
end
end
end
function killBlades()
for i = 1, #blades, 1 do
blades[i].t1:remove()
blades[i].t2:remove()
blades[i].saw:remove()
end
blades = {}
end