Make main.lua functions `local`, where possible
This commit is contained in:
parent
66bd97499a
commit
d85db79e52
56
src/main.lua
56
src/main.lua
|
@ -141,7 +141,7 @@ local Pitches <const> = {
|
||||||
}
|
}
|
||||||
|
|
||||||
---@return boolean playerIsOnSide, boolean playerIsOnOtherSide
|
---@return boolean playerIsOnSide, boolean playerIsOnOtherSide
|
||||||
function playerIsOn(side)
|
local function playerIsOn(side)
|
||||||
local ret
|
local ret
|
||||||
if PlayerTeam == battingTeam then
|
if PlayerTeam == battingTeam then
|
||||||
ret = side == C.Sides.offense
|
ret = side == C.Sides.offense
|
||||||
|
@ -158,7 +158,7 @@ end
|
||||||
---@param flyTimeMs number | nil
|
---@param flyTimeMs number | nil
|
||||||
---@param floaty boolean | nil
|
---@param floaty boolean | nil
|
||||||
---@param customBallScaler pd_animator | nil
|
---@param customBallScaler pd_animator | nil
|
||||||
function throwBall(destX, destY, easingFunc, flyTimeMs, floaty, customBallScaler)
|
local function throwBall(destX, destY, easingFunc, flyTimeMs, floaty, customBallScaler)
|
||||||
ball.heldBy = nil
|
ball.heldBy = nil
|
||||||
throwMeter = 0
|
throwMeter = 0
|
||||||
|
|
||||||
|
@ -181,7 +181,7 @@ end
|
||||||
|
|
||||||
---@param pitchFlyTimeMs number | nil
|
---@param pitchFlyTimeMs number | nil
|
||||||
---@param pitchTypeIndex number | nil
|
---@param pitchTypeIndex number | nil
|
||||||
function pitch(pitchFlyTimeMs, pitchTypeIndex)
|
local function pitch(pitchFlyTimeMs, pitchTypeIndex)
|
||||||
catcherThrownBall = false
|
catcherThrownBall = false
|
||||||
offenseMode = C.Offense.batting
|
offenseMode = C.Offense.batting
|
||||||
|
|
||||||
|
@ -210,7 +210,7 @@ end
|
||||||
---@param x number
|
---@param x number
|
||||||
---@param y number
|
---@param y number
|
||||||
---@return Base | nil
|
---@return Base | nil
|
||||||
function isTouchingBase(x, y)
|
local function isTouchingBase(x, y)
|
||||||
return utils.first(C.Bases, function(base)
|
return utils.first(C.Bases, function(base)
|
||||||
return utils.distanceBetween(x, y, base.x, base.y) < C.BaseHitbox
|
return utils.distanceBetween(x, y, base.x, base.y) < C.BaseHitbox
|
||||||
end)
|
end)
|
||||||
|
@ -220,20 +220,20 @@ end
|
||||||
---@param x number
|
---@param x number
|
||||||
---@param y number
|
---@param y number
|
||||||
---@return boolean, number
|
---@return boolean, number
|
||||||
function isTouchingBall(x, y)
|
local function isTouchingBall(x, y)
|
||||||
local ballDistance = utils.distanceBetween(x, y, ball.x, ball.y)
|
local ballDistance = utils.distanceBetween(x, y, ball.x, ball.y)
|
||||||
return ballDistance < C.BallCatchHitbox, ballDistance
|
return ballDistance < C.BallCatchHitbox, ballDistance
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param base Base
|
---@param base Base
|
||||||
---@return Runner | nil
|
---@return Runner | nil
|
||||||
function getRunnerWithNextBase(base)
|
local function getRunnerWithNextBase(base)
|
||||||
return utils.first(runners, function(runner)
|
return utils.first(runners, function(runner)
|
||||||
return runner.nextBase == base
|
return runner.nextBase == base
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
function updateForcedRunners()
|
local function updateForcedRunners()
|
||||||
local stillForced = true
|
local stillForced = true
|
||||||
for _, base in ipairs(C.Bases) do
|
for _, base in ipairs(C.Bases) do
|
||||||
local runnerTargetingBase = getRunnerWithNextBase(base)
|
local runnerTargetingBase = getRunnerWithNextBase(base)
|
||||||
|
@ -250,7 +250,7 @@ function updateForcedRunners()
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param runner integer | Runner
|
---@param runner integer | Runner
|
||||||
function outRunner(runner, message)
|
local function outRunner(runner, message)
|
||||||
if type(runner) ~= "number" then
|
if type(runner) ~= "number" then
|
||||||
for i, maybe in ipairs(runners) do
|
for i, maybe in ipairs(runners) do
|
||||||
if runner == maybe then
|
if runner == maybe then
|
||||||
|
@ -299,7 +299,7 @@ function outRunner(runner, message)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param runnerIndex number
|
---@param runnerIndex number
|
||||||
function score(runnerIndex)
|
local function score(runnerIndex)
|
||||||
outRunners[#outRunners + 1] = runners[runnerIndex]
|
outRunners[#outRunners + 1] = runners[runnerIndex]
|
||||||
table.remove(runners, runnerIndex)
|
table.remove(runners, runnerIndex)
|
||||||
battingTeam.score = battingTeam.score + 1
|
battingTeam.score = battingTeam.score + 1
|
||||||
|
@ -307,7 +307,7 @@ function score(runnerIndex)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@return Base[]
|
---@return Base[]
|
||||||
function getForcedOutTargets()
|
local function getForcedOutTargets()
|
||||||
local targets = {}
|
local targets = {}
|
||||||
for _, base in ipairs(C.Bases) do
|
for _, base in ipairs(C.Bases) do
|
||||||
local runnerTargetingBase = getRunnerWithNextBase(base)
|
local runnerTargetingBase = getRunnerWithNextBase(base)
|
||||||
|
@ -322,7 +322,7 @@ end
|
||||||
|
|
||||||
--- Returns the position,distance of the basest closest to the runner furthest from a base
|
--- Returns the position,distance of the basest closest to the runner furthest from a base
|
||||||
---@return Base | nil, number | nil
|
---@return Base | nil, number | nil
|
||||||
function getBaseOfStrandedRunner()
|
local function getBaseOfStrandedRunner()
|
||||||
local farRunnersBase, farDistance
|
local farRunnersBase, farDistance
|
||||||
for _, runner in pairs(runners) do
|
for _, runner in pairs(runners) do
|
||||||
if runner ~= batter then
|
if runner ~= batter then
|
||||||
|
@ -339,7 +339,7 @@ end
|
||||||
|
|
||||||
--- Returns x,y of the out target
|
--- Returns x,y of the out target
|
||||||
---@return number|nil, number|nil
|
---@return number|nil, number|nil
|
||||||
function getNextOutTarget()
|
local function getNextOutTarget()
|
||||||
-- TODO: Handle missed throws, check for fielders at target, etc.
|
-- TODO: Handle missed throws, check for fielders at target, etc.
|
||||||
local targets = getForcedOutTargets()
|
local targets = getForcedOutTargets()
|
||||||
if #targets ~= 0 then
|
if #targets ~= 0 then
|
||||||
|
@ -353,7 +353,7 @@ function getNextOutTarget()
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param fielder Fielder
|
---@param fielder Fielder
|
||||||
function tryToMakeAnOut(fielder)
|
local function tryToMakeAnOut(fielder)
|
||||||
local targetX, targetY = getNextOutTarget()
|
local targetX, targetY = getNextOutTarget()
|
||||||
if targetX ~= nil and targetY ~= nil then
|
if targetX ~= nil and targetY ~= nil then
|
||||||
local nearestFielder = utils.getNearestOf(Field.fielders, targetX, targetY)
|
local nearestFielder = utils.getNearestOf(Field.fielders, targetX, targetY)
|
||||||
|
@ -366,7 +366,7 @@ function tryToMakeAnOut(fielder)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function readThrow()
|
local function readThrow()
|
||||||
if throwMeter > C.ThrowMeterMax then
|
if throwMeter > C.ThrowMeterMax then
|
||||||
return (C.PitchFlyMs / (throwMeter / C.ThrowMeterMax))
|
return (C.PitchFlyMs / (throwMeter / C.ThrowMeterMax))
|
||||||
end
|
end
|
||||||
|
@ -376,7 +376,7 @@ end
|
||||||
---@param thrower Fielder
|
---@param thrower Fielder
|
||||||
---@param throwFlyMs number
|
---@param throwFlyMs number
|
||||||
---@return boolean didThrow
|
---@return boolean didThrow
|
||||||
function buttonControlledThrow(thrower, throwFlyMs, forbidThrowHome)
|
local function buttonControlledThrow(thrower, throwFlyMs, forbidThrowHome)
|
||||||
local targetBase
|
local targetBase
|
||||||
if playdate.buttonIsPressed(playdate.kButtonLeft) then
|
if playdate.buttonIsPressed(playdate.kButtonLeft) then
|
||||||
targetBase = C.Bases[C.Third]
|
targetBase = C.Bases[C.Third]
|
||||||
|
@ -402,7 +402,7 @@ function buttonControlledThrow(thrower, throwFlyMs, forbidThrowHome)
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
function outEligibleRunners(fielder)
|
local function outEligibleRunners(fielder)
|
||||||
local touchedBase = isTouchingBase(fielder.x, fielder.y)
|
local touchedBase = isTouchingBase(fielder.x, fielder.y)
|
||||||
local didOutRunner = false
|
local didOutRunner = false
|
||||||
for i, runner in pairs(runners) do
|
for i, runner in pairs(runners) do
|
||||||
|
@ -423,7 +423,7 @@ function outEligibleRunners(fielder)
|
||||||
return didOutRunner
|
return didOutRunner
|
||||||
end
|
end
|
||||||
|
|
||||||
function updateNpcFielder(fielder, outedSomeRunner)
|
local function updateNpcFielder(fielder, outedSomeRunner)
|
||||||
if offenseMode ~= C.Offense.running then
|
if offenseMode ~= C.Offense.running then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
@ -437,7 +437,7 @@ function updateNpcFielder(fielder, outedSomeRunner)
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param fielder Fielder
|
---@param fielder Fielder
|
||||||
function updateFielder(fielder)
|
local function updateFielder(fielder)
|
||||||
if fielder.target ~= nil then
|
if fielder.target ~= nil then
|
||||||
if not utils.moveAtSpeed(fielder, fielder.speed * deltaSeconds, fielder.target) then
|
if not utils.moveAtSpeed(fielder, fielder.speed * deltaSeconds, fielder.target) then
|
||||||
fielder.target = nil
|
fielder.target = nil
|
||||||
|
@ -465,7 +465,7 @@ end
|
||||||
---@param runnerIndex integer | nil May only be nil if runner == batter
|
---@param runnerIndex integer | nil May only be nil if runner == batter
|
||||||
---@param appliedSpeed number
|
---@param appliedSpeed number
|
||||||
---@return boolean
|
---@return boolean
|
||||||
function updateRunner(runner, runnerIndex, appliedSpeed)
|
local function updateRunner(runner, runnerIndex, appliedSpeed)
|
||||||
local autoRunSpeed = 20 * deltaSeconds
|
local autoRunSpeed = 20 * deltaSeconds
|
||||||
--autoRunSpeed = 140
|
--autoRunSpeed = 140
|
||||||
|
|
||||||
|
@ -515,7 +515,7 @@ function updateRunner(runner, runnerIndex, appliedSpeed)
|
||||||
return prevX ~= runner.x or prevY ~= runner.y
|
return prevX ~= runner.x or prevY ~= runner.y
|
||||||
end
|
end
|
||||||
|
|
||||||
function nextBatter()
|
local function nextBatter()
|
||||||
batter = nil
|
batter = nil
|
||||||
playdate.timer.new(2000, function()
|
playdate.timer.new(2000, function()
|
||||||
pitchTracker:reset()
|
pitchTracker:reset()
|
||||||
|
@ -525,7 +525,7 @@ function nextBatter()
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
function walk()
|
local function walk()
|
||||||
announcer:say("Walk!")
|
announcer:say("Walk!")
|
||||||
Field.fielders.first.target = C.Bases[C.First]
|
Field.fielders.first.target = C.Bases[C.First]
|
||||||
batter.nextBase = C.Bases[C.First]
|
batter.nextBase = C.Bases[C.First]
|
||||||
|
@ -536,7 +536,7 @@ function walk()
|
||||||
nextBatter()
|
nextBatter()
|
||||||
end
|
end
|
||||||
|
|
||||||
function strikeOut()
|
local function strikeOut()
|
||||||
local outBatter = batter
|
local outBatter = batter
|
||||||
batter = nil
|
batter = nil
|
||||||
outRunner(outBatter --[[@as Runner]], "Strike out!")
|
outRunner(outBatter --[[@as Runner]], "Strike out!")
|
||||||
|
@ -544,7 +544,7 @@ function strikeOut()
|
||||||
end
|
end
|
||||||
|
|
||||||
---@param batDeg number
|
---@param batDeg number
|
||||||
function updateBatting(batDeg, batSpeed)
|
local function updateBatting(batDeg, batSpeed)
|
||||||
if ball.y < C.BallOffscreen then
|
if ball.y < C.BallOffscreen then
|
||||||
ball.y = ballAnimatorY:currentValue() + ballFloatAnimator:currentValue()
|
ball.y = ballAnimatorY:currentValue() + ballFloatAnimator:currentValue()
|
||||||
ball.size = C.SmallestBallRadius -- ballFloatAnimator:currentValue()
|
ball.size = C.SmallestBallRadius -- ballFloatAnimator:currentValue()
|
||||||
|
@ -595,7 +595,7 @@ end
|
||||||
--- Returns true only if at least one of the given runners moved during this update
|
--- Returns true only if at least one of the given runners moved during this update
|
||||||
---@param appliedSpeed number
|
---@param appliedSpeed number
|
||||||
---@return boolean
|
---@return boolean
|
||||||
function updateRunning(appliedSpeed, forcedOnly)
|
local function updateRunning(appliedSpeed, forcedOnly)
|
||||||
ball.size = ballSizeAnimator:currentValue()
|
ball.size = ballSizeAnimator:currentValue()
|
||||||
|
|
||||||
local runnerMoved = false
|
local runnerMoved = false
|
||||||
|
@ -610,7 +610,7 @@ function updateRunning(appliedSpeed, forcedOnly)
|
||||||
return runnerMoved
|
return runnerMoved
|
||||||
end
|
end
|
||||||
|
|
||||||
function walkAwayOutRunners()
|
local function walkAwayOutRunners()
|
||||||
for i, runner in ipairs(outRunners) do
|
for i, runner in ipairs(outRunners) do
|
||||||
if runner.x < C.Screen.W + 50 and runner.y < C.Screen.H + 50 then
|
if runner.x < C.Screen.W + 50 and runner.y < C.Screen.H + 50 then
|
||||||
runner.x = runner.x + (deltaSeconds * 25)
|
runner.x = runner.x + (deltaSeconds * 25)
|
||||||
|
@ -621,7 +621,7 @@ function walkAwayOutRunners()
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function playerPitch(throwFly)
|
local function playerPitch(throwFly)
|
||||||
local aButton = playdate.buttonIsPressed(playdate.kButtonA)
|
local aButton = playdate.buttonIsPressed(playdate.kButtonA)
|
||||||
local bButton = playdate.buttonIsPressed(playdate.kButtonB)
|
local bButton = playdate.buttonIsPressed(playdate.kButtonB)
|
||||||
if not aButton and not bButton then
|
if not aButton and not bButton then
|
||||||
|
@ -635,7 +635,7 @@ function playerPitch(throwFly)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function updateGameState()
|
local function updateGameState()
|
||||||
deltaSeconds = playdate.getElapsedTime() or 0
|
deltaSeconds = playdate.getElapsedTime() or 0
|
||||||
playdate.resetElapsedTime()
|
playdate.resetElapsedTime()
|
||||||
local crankChange = playdate.getCrankChange() --[[@as number]]
|
local crankChange = playdate.getCrankChange() --[[@as number]]
|
||||||
|
@ -802,7 +802,7 @@ function playdate.update()
|
||||||
announcer:draw(C.Center.x, 10)
|
announcer:draw(C.Center.x, 10)
|
||||||
end
|
end
|
||||||
|
|
||||||
function init()
|
local function init()
|
||||||
playdate.display.setRefreshRate(50)
|
playdate.display.setRefreshRate(50)
|
||||||
gfx.setBackgroundColor(gfx.kColorWhite)
|
gfx.setBackgroundColor(gfx.kColorWhite)
|
||||||
playdate.setMenuImage(gfx.image.new("images/game/menu-image.png"))
|
playdate.setMenuImage(gfx.image.new("images/game/menu-image.png"))
|
||||||
|
|
Loading…
Reference in New Issue