dbg = {} function dbg.label(value, name) if type(value) == "table" then print(name .. ":") printTable(value) elseif type(value) == "boolean" then if value then print(name .. ": " .. (value and "true" or "false")) end elseif value ~= nil then print(name .. ": " .. value) else print(name .. ": nil") end return value end -- Only works if called with the bases empty (i.e. the only runner should be the batter. function dbg.loadTheBases(br) br:pushNewBatter() br:pushNewBatter() br:pushNewBatter() br.runners[2].x = C.Bases[C.First].x br.runners[2].y = C.Bases[C.First].y br.runners[2].nextBase = C.Bases[C.Second] br.runners[3].x = C.Bases[C.Second].x br.runners[3].y = C.Bases[C.Second].y br.runners[3].nextBase = C.Bases[C.Third] br.runners[4].x = C.Bases[C.Third].x br.runners[4].y = C.Bases[C.Third].y br.runners[4].nextBase = C.Bases[C.Home] end local hitSamples = { away = { { utils.xy(7.88733, -16.3434), utils.xy(378.3376, 30.49521), utils.xy(367.1036, 21.55336), }, { utils.xy(379.8051, -40.82794), utils.xy(-444.5791, -30.30901), utils.xy(-30.43079, -30.50307), }, { utils.xy(227.8881, -14.56854), utils.xy(293.5208, 39.38919), utils.xy(154.4738, -26.55899), }, }, home = { { utils.xy(146.2505, -89.12155), utils.xy(429.5428, 59.62944), utils.xy(272.4666, -78.578), }, { utils.xy(485.0516, 112.8341), utils.xy(290.9232, -4.946442), utils.xy(263.4262, -6.482407), }, { utils.xy(260.6927, -63.63049), utils.xy(392.1548, -44.22421), utils.xy(482.5545, 105.3476), utils.xy(125.5928, 18.53091), }, }, } ---@return Statistics function dbg.mockStatistics(inningCount) inningCount = inningCount or 9 local stats = Statistics.new() for i = 1, inningCount - 1 do stats.innings[i].home.score = math.floor(math.random() * 5) stats.innings[i].away.score = math.floor(math.random() * 5) if hitSamples.home[i] ~= nil then stats.innings[i].home.hits = hitSamples.home[i] end if hitSamples.away[i] ~= nil then stats.innings[i].away.hits = hitSamples.away[i] end stats:pushInning() end local homeScore, awayScore = utils.totalScores(stats) if homeScore == awayScore then stats.innings[#stats.innings].home.score = 1 + stats.innings[#stats.innings].home.score end return stats end ---@param points XyPair[] function dbg.drawLine(points) for i = 2, #points do local prev = points[i - 1] local next = points[i] playdate.graphics.drawLine(prev.x, prev.y, next.x, next.y) end end if not playdate then return dbg end