Files
fpv/source/scripts/bomber/movableCrosshair.lua
2026-02-24 00:46:50 +01:00

96 lines
2.3 KiB
Lua

MovableCrosshair = {}
class('MovableCrosshair').extends(playdate.graphics.sprite)
function MovableCrosshair:init()
MovableCrosshair.super.init(self)
self.lineLength = 10
self.gapSize = 3
self.baseX = 200
self.baseY = 150
self.moveRadius = 2
self.moveSpeed = 2.3
self.time = 0
local totalSize = (self.lineLength + self.gapSize) * 2 + 10
self:setSize(totalSize, totalSize)
self.drawOffsetX = totalSize / 2
self.drawOffsetY = totalSize / 2
self:add(self.baseX, self.baseY)
self:setCenter(0.5, 0.5)
self:markDirty()
self:setZIndex(11)
end
function MovableCrosshair:update()
MovableCrosshair.super.update(self)
self.time = self.time + playdate.display.getRefreshRate() / 1000
local radius = self.moveRadius
if NoiseAnimation.isJamming then
radius = 8
end
local offsetX = math.sin(self.time) * radius
local offsetY = math.cos(self.time * 1.3) * radius
if NoiseAnimation.isJamming then
offsetX = offsetX + math.random(-3, 3)
offsetY = offsetY + math.random(-3, 3)
end
self:moveTo(self.baseX + offsetX, self.baseY + offsetY)
self:markDirty()
end
function MovableCrosshair:draw()
local centerX = self.drawOffsetX
local centerY = self.drawOffsetY
playdate.graphics.drawLine(
centerX - self.lineLength - self.gapSize, centerY,
centerX - self.gapSize, centerY
)
playdate.graphics.drawLine(
centerX + self.gapSize, centerY,
centerX + self.lineLength + self.gapSize, centerY
)
playdate.graphics.drawLine(
centerX, centerY - self.lineLength - self.gapSize,
centerX, centerY - self.gapSize
)
playdate.graphics.drawLine(
centerX, centerY + self.gapSize,
centerX, centerY + self.lineLength + self.gapSize
)
end
function MovableCrosshair:moveUp()
if self.baseY > 5 then
self.baseY = self.baseY - self.moveSpeed
end
end
function MovableCrosshair:moveDown()
if self.baseY < 235 then
self.baseY = self.baseY + self.moveSpeed
end
end
function MovableCrosshair:moveLeft()
if self.baseX > 5 then
self.baseX = self.baseX - self.moveSpeed
end
end
function MovableCrosshair:moveRight()
if self.baseX < 395 then
self.baseX = self.baseX + self.moveSpeed
end
end