From aa571dab4efa7e036a9f00ad789cd2673f7393a6 Mon Sep 17 00:00:00 2001 From: Sage Vaillancourt Date: Sun, 2 Feb 2025 18:30:35 -0500 Subject: [PATCH] Extract runner's onArrive to a dedicated function. --- src/main.lua | 69 ++++++++++++++++++++++++++++------------------ src/scoreboard.lua | 3 +- 2 files changed, 44 insertions(+), 28 deletions(-) diff --git a/src/main.lua b/src/main.lua index dbdf366..be7b7f5 100644 --- a/src/main.lua +++ b/src/main.lua @@ -7,10 +7,31 @@ import 'CoreLibs/object.lua' import 'CoreLibs/timer.lua' import 'CoreLibs/ui.lua' ---- @alias XYPair { x: number, y: number } ---- @alias Base { x: number, y: number } ---- @alias Runner { x: number, y: number, nextBase: Base, prevBase: Base | nil, forcedTo: Base } ---- @alias Fielder { onArrive: fun() | nil, x: number | nil, y: number | nil, target: XYPair | nil, speed: number } +--- @alias XYPair { +--- x: number, +--- y: number, +--- } + +--- @alias Base { +--- x: number, +--- y: number, +--- } + +--- @alias Runner { +--- x: number, +--- y: number, +--- nextBase: Base, +--- prevBase: Base | nil, +--- forcedTo: Base | nil, +--- } + +--- @alias Fielder { +--- onArrive: fun() | nil, +--- x: number | nil, +--- y: number | nil, +--- target: XYPair | nil, +--- speed: number, +--- } import 'graphics.lua' import 'scoreboard.lua' @@ -34,7 +55,7 @@ local PlayerImageBlipper = blipper.new(100, "images/game/player.png", "i local DanceBounceMs = 500 local DanceBounceCount = 4 -local FielderDanceAnimator = gfx.animator.new(DanceBounceMs, 10, 0, easingHill) --, -1 * DanceBounceMs * DanceBounceCount) +local FielderDanceAnimator = gfx.animator.new(DanceBounceMs, 10, 0, easingHill) FielderDanceAnimator.repeatCount = DanceBounceCount - 1 local BallOffscreen = 999 @@ -200,14 +221,6 @@ function playdate.AButtonDown() pitch() end -function playdate.upButtonDown() end - -function playdate.downButtonDown() end - -function playdate.rightButtonDown() end - -function playdate.leftButtonDown() end - local elapsedSec = 0 local crankChange = 0 local acceleratedChange @@ -282,7 +295,7 @@ function updateFielders() else fielder.target = nil if fielder.onArrive then - fielder.onArrive() + fielder:onArrive() end end end @@ -436,6 +449,20 @@ function init() playdate.getSystemMenu():addMenuItem("Restart game", function() end) end +function tryToThrowOut(self) + self.onArrive = nil + local targetX, targetY = getNextThrowTarget() + if targetX ~= nil and targetY ~= nil then + local nearestFielder = getNearestOf(fielders, targetX, targetY) + nearestFielder.target = xy(targetX, targetY) + if nearestFielder == self then + ball.heldBy = self + else + throwBall(targetX, targetY, playdate.easingFunctions.linear, nil, true) + end + end +end + function updateBatting() secondsSincePitchAllowed = secondsSincePitchAllowed + deltaSeconds if secondsSincePitchAllowed > PitchAfterSeconds then @@ -482,19 +509,7 @@ function updateBatting() local chasingFielder = getNearestOf(fielders, ballDestX, ballDestY) chasingFielder.target = { x = ballDestX, y = ballDestY } - chasingFielder.onArrive = function() - chasingFielder.onArrive = nil - local targetX, targetY = getNextThrowTarget() - if targetX ~= nil and targetY ~= nil then - local nearestFielder = getNearestOf(fielders, targetX, targetY) - nearestFielder.target = xy(targetX, targetY) - if nearestFielder == chasingFielder then - ball.heldBy = chasingFielder - else - throwBall(targetX, targetY, playdate.easingFunctions.linear, nil, true) - end - end - end + chasingFielder.onArrive = tryToThrowOut end end diff --git a/src/scoreboard.lua b/src/scoreboard.lua index db4eb2b..a9ba418 100644 --- a/src/scoreboard.lua +++ b/src/scoreboard.lua @@ -29,7 +29,8 @@ function drawScoreboard(x, y, teams, outs) gfx.setColor(gfx.kColorWhite) function circleParams(i) - return (x + ScoreboardMarginX + OutBubbleRadius) + (i * 2.5 * OutBubbleRadius), y + 46, OutBubbleRadius + local circleOffset = i * 2.5 * OutBubbleRadius + return (x + ScoreboardMarginX + OutBubbleRadius) + circleOffset, y + 46, OutBubbleRadius end for i = outs, 2 do