From 1bdcc62347dc2643447eb709ab8545d8a3fa8364 Mon Sep 17 00:00:00 2001 From: Sage Vaillancourt Date: Mon, 17 Feb 2025 20:55:35 -0500 Subject: [PATCH] Runners smile instead of frown after scoring. --- src/ball.lua | 1 - src/baserunning.lua | 22 ++++++++++++++++------ src/main.lua | 6 +++++- 3 files changed, 21 insertions(+), 8 deletions(-) diff --git a/src/ball.lua b/src/ball.lua index 9e3d040..3077fef 100644 --- a/src/ball.lua +++ b/src/ball.lua @@ -69,7 +69,6 @@ function Ball:launch(destX, destY, easingFunc, flyTimeMs, floaty, customBallScal if customBallScaler then self.sizeAnimator = customBallScaler else - -- TODO? Scale based on distance? self.sizeAnimator = self.animatorLib.new(flyTimeMs, 9, C.SmallestBallRadius, utils.easingHill) end self.yAnimator = self.animatorLib.new(flyTimeMs, self.y, destY, easingFunc) diff --git a/src/baserunning.lua b/src/baserunning.lua index 2e7a313..661aeea 100644 --- a/src/baserunning.lua +++ b/src/baserunning.lua @@ -65,7 +65,6 @@ function Baserunning:outRunner(runner, message) self.onThirdOut() self.outs = 0 - -- TODO: outRunners/scoredRunners split while #self.runners > 0 do self.outRunners[#self.outRunners + 1] = table.remove(self.runners, #self.runners) end @@ -124,16 +123,27 @@ function Baserunning:convertBatterToRunner() self.batter = nil -- Demote batter to a mere runner end +local function walkWayOutRunner(deltaSeconds, runner) + if runner.x < C.Screen.W + 50 and runner.y < C.Screen.H + 50 then + runner.x = runner.x + (deltaSeconds * 25) + runner.y = runner.y + (deltaSeconds * 25) + return true + end + return false +end + ---@param deltaSeconds number function Baserunning:walkAwayOutRunners(deltaSeconds) for i, runner in ipairs(self.outRunners) do - if runner.x < C.Screen.W + 50 and runner.y < C.Screen.H + 50 then - runner.x = runner.x + (deltaSeconds * 25) - runner.y = runner.y + (deltaSeconds * 25) - else + if not walkWayOutRunner(deltaSeconds, runner) then table.remove(self.outRunners, i) end end + for i, runner in ipairs(self.scoredRunners) do + if not walkWayOutRunner(deltaSeconds, runner) then + table.remove(self.scoredRunners, i) + end + end end ---@return Runner @@ -155,7 +165,7 @@ end ---@param runnerIndex number function Baserunning:runnerScored(runnerIndex) -- TODO: outRunners/scoredRunners split - self.outRunners[#self.outRunners + 1] = self.runners[runnerIndex] + self.scoredRunners[#self.scoredRunners + 1] = self.runners[runnerIndex] table.remove(self.runners, runnerIndex) end diff --git a/src/main.lua b/src/main.lua index c6a2860..6d19a50 100644 --- a/src/main.lua +++ b/src/main.lua @@ -314,6 +314,8 @@ end ---@param scoredRunCount number function Game:score(scoredRunCount) + -- TODO: end the game when it's the bottom of the ninth the home team is now in the lead. + -- outRunners/scoredRunners split self:battingTeamCurrentInning().score = self:battingTeamCurrentInning().score + scoredRunCount self.announcer:say("SCORE!") @@ -613,7 +615,6 @@ function Game:update() end local playerHeightOffset = 20 - -- TODO? Scale sprites down as y increases for _, runner in pairs(self.baserunning.runners) do addDraw(runner.y, function() if runner == self.baserunning.batter then @@ -644,6 +645,9 @@ function Game:update() for _, runner in pairs(self.baserunning.outRunners) do self.state.battingTeamSprites.frowning:draw(runner.x, runner.y - playerHeightOffset) end + for _, runner in pairs(self.baserunning.scoredRunners) do + self.state.battingTeamSprites.smiling:draw(runner.x, runner.y - playerHeightOffset) + end if not ballIsHeld then gfx.setLineWidth(2)