Add some slight linger time to draw/throwMeter

This commit is contained in:
Sage Vaillancourt 2025-02-20 00:28:14 -05:00
parent e45231dadd
commit 2d6f83a23f
2 changed files with 18 additions and 2 deletions

View File

@ -2,6 +2,7 @@
local gfx <const> = playdate.graphics
local ThrowMeterHeight <const> = 50
local ThrowMeterLingerSec <const> = 1.5
---@param x number
---@param y number
@ -10,6 +11,7 @@ function throwMeter:draw(x, y)
gfx.drawRect(x, y, 14, ThrowMeterHeight)
if self.lastReadThrow then
-- TODO: If ratio is "perfect", show some additional effect
-- TODO: If meter has moved to a new fielder, empty it.
local ratio = (self.lastReadThrow - throwMeter.MinCharge) / (self.idealPower - throwMeter.MinCharge)
local height = ThrowMeterHeight * ratio
gfx.fillRect(x + 2, y + ThrowMeterHeight - height, 10, height)
@ -19,8 +21,18 @@ function throwMeter:draw(x, y)
end
function throwMeter:drawNearFielder(fielder)
if not fielder then
if not fielder and not self.lastThrower then
return
end
throwMeter:draw(fielder.x - 25, fielder.y - 10)
if fielder then
self.lastThrower = fielder
actionQueue:upsert("throwMeterLinger", 200 + ThrowMeterLingerSec * 1000, function()
local dt = 0
while dt < ThrowMeterLingerSec do
dt = dt + coroutine.yield()
end
self.lastThrower = nil
end)
end
self:draw(self.lastThrower.x - 25, self.lastThrower.y - 10)
end

View File

@ -119,6 +119,10 @@ throwMeter = {
value = 0,
idealPower = 50,
lastReadThrow = nil,
--- Used at draw-time only.
---@type Fielder | nil
lastThrower = nil,
}
function throwMeter:reset()