Add some slight linger time to draw/throwMeter
This commit is contained in:
parent
e45231dadd
commit
2d6f83a23f
|
@ -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
|
||||
|
|
|
@ -119,6 +119,10 @@ throwMeter = {
|
|||
value = 0,
|
||||
idealPower = 50,
|
||||
lastReadThrow = nil,
|
||||
|
||||
--- Used at draw-time only.
|
||||
---@type Fielder | nil
|
||||
lastThrower = nil,
|
||||
}
|
||||
|
||||
function throwMeter:reset()
|
||||
|
|
Loading…
Reference in New Issue