41 lines
1.3 KiB
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
|