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 gfx <const> = playdate.graphics
|
||||||
|
|
||||||
local ThrowMeterHeight <const> = 50
|
local ThrowMeterHeight <const> = 50
|
||||||
|
local ThrowMeterLingerSec <const> = 1.5
|
||||||
|
|
||||||
---@param x number
|
---@param x number
|
||||||
---@param y number
|
---@param y number
|
||||||
|
@ -10,6 +11,7 @@ function throwMeter:draw(x, y)
|
||||||
gfx.drawRect(x, y, 14, ThrowMeterHeight)
|
gfx.drawRect(x, y, 14, ThrowMeterHeight)
|
||||||
if self.lastReadThrow then
|
if self.lastReadThrow then
|
||||||
-- TODO: If ratio is "perfect", show some additional effect
|
-- 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 ratio = (self.lastReadThrow - throwMeter.MinCharge) / (self.idealPower - throwMeter.MinCharge)
|
||||||
local height = ThrowMeterHeight * ratio
|
local height = ThrowMeterHeight * ratio
|
||||||
gfx.fillRect(x + 2, y + ThrowMeterHeight - height, 10, height)
|
gfx.fillRect(x + 2, y + ThrowMeterHeight - height, 10, height)
|
||||||
|
@ -19,8 +21,18 @@ function throwMeter:draw(x, y)
|
||||||
end
|
end
|
||||||
|
|
||||||
function throwMeter:drawNearFielder(fielder)
|
function throwMeter:drawNearFielder(fielder)
|
||||||
if not fielder then
|
if not fielder and not self.lastThrower then
|
||||||
return
|
return
|
||||||
end
|
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
|
end
|
||||||
|
|
|
@ -119,6 +119,10 @@ throwMeter = {
|
||||||
value = 0,
|
value = 0,
|
||||||
idealPower = 50,
|
idealPower = 50,
|
||||||
lastReadThrow = nil,
|
lastReadThrow = nil,
|
||||||
|
|
||||||
|
--- Used at draw-time only.
|
||||||
|
---@type Fielder | nil
|
||||||
|
lastThrower = nil,
|
||||||
}
|
}
|
||||||
|
|
||||||
function throwMeter:reset()
|
function throwMeter:reset()
|
||||||
|
|
Loading…
Reference in New Issue