BatterUp/src/graphics.lua

41 lines
1.3 KiB
Lua

--- Assumes that background image is of size
--- XXX
--- XOX
--- Where each character is the size of the screen, and 'O' is the default view.
function getDrawOffset(screenW, screenH, ballX, ballY)
local offsetX, offsetY
if ballY > screenH then
return 0, 0
end
offsetY = math.max(0, -1 * ballY)
if ballX > 0 and ballX < screenW then
offsetX = 0
elseif ballX < 0 then
offsetX = math.max(-1 * screenW, ballX * -1)
elseif ballX > screenW then
offsetX = math.min(screenW * 2, (ballX * -1) + screenW)
end
return offsetX * 1.3, offsetY * 1.5
end
-- selene: allow(unscoped_variables)
blipper = {}
--- Build an object that simply "blips" between the given images at the given interval.
--- Expects `playdate.graphics.animation.blinker.updateAll()` to be called on every update.
function blipper.new(msInterval, imagePath1, imagePath2)
local blinker = playdate.graphics.animation.blinker.new(msInterval, msInterval, true)
blinker:start()
return {
blinker = blinker,
image1 = playdate.graphics.image.new(imagePath1),
image2 = playdate.graphics.image.new(imagePath2),
draw = function(self, disableBlipping, x, y)
local currentImage = (disableBlipping or self.blinker.on) and self.image2 or self.image1
currentImage:draw(x, y)
end,
}
end