diff --git a/src/assets.lua b/src/assets.lua index d1a5dba..ed4e298 100644 --- a/src/assets.lua +++ b/src/assets.lua @@ -41,6 +41,8 @@ BootTune = playdate.sound.sampleplayer.new("music/BootTune.wav") BootTuneOrgany = playdate.sound.sampleplayer.new("music/BootTuneOrgany.wav") -- luacheck: ignore TinnyBackground = playdate.sound.sampleplayer.new("music/TinnyBackground.wav") +-- luacheck: ignore +MenuMusic = playdate.sound.sampleplayer.new("music/MenuMusic.wav") Logos = { { name = "Base", image = playdate.graphics.image.new("images/game/logos/Base.png") }, diff --git a/src/main-menu.lua b/src/main-menu.lua index 4a21e2c..4f244c4 100644 --- a/src/main-menu.lua +++ b/src/main-menu.lua @@ -11,6 +11,7 @@ local StartFont = gfx.font.new("fonts/Roobert-20-Medium.pft") --- Will replace playdate.update when the menu is done. ---@param next { new: fun(settings: Settings): { update: fun(self) } } function MainMenu.start(next) + MenuMusic:play(0) MainMenu.next = next playdate.update = MainMenu.update end @@ -25,6 +26,7 @@ local function startGame() }) playdate.resetElapsedTime() transitionBetween(MainMenu, next) + MenuMusic:setPaused(true) end local function pausingEaser(baseEaser) diff --git a/src/main.lua b/src/main.lua index 2d70da1..4a24d61 100644 --- a/src/main.lua +++ b/src/main.lua @@ -490,11 +490,7 @@ function Game:updateGameState() end if self.state.offenseState == C.Offense.batting then - if self.state.ball.y < C.StrikeZoneStartY then - pitchTracker.recordedPitchX = nil - elseif not pitchTracker.recordedPitchX then - pitchTracker.recordedPitchX = self.state.ball.x - end + pitchTracker:recordIfPassed(self.state.ball) local pitcher = self.fielding.fielders.pitcher if utils.distanceBetween(pitcher.x, pitcher.y, C.PitcherStartPos.x, C.PitcherStartPos.y) < C.BaseHitbox then diff --git a/src/music/MenuMusic.wav b/src/music/MenuMusic.wav new file mode 100644 index 0000000..e08f303 Binary files /dev/null and b/src/music/MenuMusic.wav differ diff --git a/src/utils.lua b/src/utils.lua index 5c1d4ef..34af323 100644 --- a/src/utils.lua +++ b/src/utils.lua @@ -250,10 +250,8 @@ function utils.totalScores(stats) end PitchOutcomes = { - Strike = {}, - StrikeOut = {}, - Ball = {}, - Walk = {}, + StrikeOut = "StrikeOut", + Walk = "Walk", } pitchTracker = { @@ -263,39 +261,47 @@ pitchTracker = { strikes = 0, balls = 0, - - reset = function(self) - self.strikes = 0 - self.balls = 0 - end, - - ---@param didSwing boolean - ---@param fieldingTeamInningData TeamInningData - updatePitchCounts = function(self, didSwing, fieldingTeamInningData) - if not self.recordedPitchX then - return - end - - local currentPitchingStats = fieldingTeamInningData.pitching - - if didSwing or self.recordedPitchX > C.StrikeZoneStartX and self.recordedPitchX < C.StrikeZoneEndX then - self.strikes = self.strikes + 1 - currentPitchingStats.strikes = currentPitchingStats.strikes + 1 - if self.strikes >= 3 then - self:reset() - return PitchOutcomes.StrikeOut - end - else - self.balls = self.balls + 1 - currentPitchingStats.balls = currentPitchingStats.balls + 1 - if self.balls >= 4 then - self:reset() - return PitchOutcomes.Walk - end - end - end, } +function pitchTracker:reset() + self.strikes = 0 + self.balls = 0 +end + +function pitchTracker:recordIfPassed(ball) + if ball.y < C.StrikeZoneStartY then + self.recordedPitchX = nil + elseif not pitchTracker.recordedPitchX then + self.recordedPitchX = ball.x + end +end + +---@param didSwing boolean +---@param fieldingTeamInningData TeamInningData +function pitchTracker:updatePitchCounts(didSwing, fieldingTeamInningData) + if not self.recordedPitchX then + return + end + + local currentPitchingStats = fieldingTeamInningData.pitching + + if didSwing or self.recordedPitchX > C.StrikeZoneStartX and self.recordedPitchX < C.StrikeZoneEndX then + self.strikes = self.strikes + 1 + currentPitchingStats.strikes = currentPitchingStats.strikes + 1 + if self.strikes >= 3 then + self:reset() + return PitchOutcomes.StrikeOut + end + else + self.balls = self.balls + 1 + currentPitchingStats.balls = currentPitchingStats.balls + 1 + if self.balls >= 4 then + self:reset() + return PitchOutcomes.Walk + end + end +end + ----------------- -- Throw Meter -- -----------------