Commit Graph

95 Commits

Author SHA1 Message Date
Sage Vaillancourt 6007ac971f Add .luacheckrc, remove selene.toml 2025-02-16 18:43:09 -05:00
Sage Vaillancourt db1409d94d selene -> luacheck
Greatly simplifies the Makefile.
2025-02-16 15:14:59 -05:00
Sage Vaillancourt bbaaca4a2d Sort runners/fielders by `y` for draw order
Pulled Fielding:drawFielders() back out into main.lua for this.
Also switching some table-keyed enums to string literal types.
2025-02-15 22:13:37 -05:00
Sage Vaillancourt 51855e13cf Convert main into a Game object.
Much BATTER encapsulation of its dependencies and mutable state. Only the team scores are still global and mutable, but that shouldn't be too hard to fix.
2025-02-15 17:38:56 -05:00
Sage Vaillancourt bb95ef5a63 Add inning count selection to main menu. 2025-02-15 09:40:07 -05:00
Sage Vaillancourt 8943eef73f Add simple main menu (disabled for now)
String names on Logo assets
Add dbg.drawLine() - to use when defining outfield boundaries.
Allow flipped fielder draws.
2025-02-14 15:42:10 -05:00
Sage Vaillancourt e710a79d9c Unified test/setup.lua harness 2025-02-12 23:35:05 -05:00
Sage Vaillancourt c8f128f277 Add alternate logos.
Tweak assets.lua2p to put them in their own table.
2025-02-12 23:10:38 -05:00
Sage Vaillancourt 027bb31bff A bit of testing for baserunning and fielding.
Required minor reworking to get those test harnesses in place.
2025-02-12 22:49:37 -05:00
Sage Vaillancourt a801b64f55 Fielders can catch passing balls.
Implemented with a new catchEligible field. Should be easy enough to add some erroring to those catches, too.
Allow npc to control individual baserunners.
Add a bit more dirt to the infield.

This commit *does* introduce some entanglement between files. E.g. the markIneligible() calls, and overriding ball.heldBy from within Fielding
2025-02-12 17:18:18 -05:00
Sage Vaillancourt 1926960c86 NPCs can play each other
Some timing tweaks and TODOs.
Cluster global state tighter together.
2025-02-11 13:50:03 -05:00
Sage Vaillancourt b9d25e18d8 New black away uniforms!
Generate sprites from component images during load.
Should make it easy to swap out logos at runtime.
2025-02-11 08:32:51 -05:00
Sage Vaillancourt 0646663e5e Faster fielders
Adjust left and right field positions.
Bouncy baserunners.
Patched npc nil index issue.
2025-02-11 00:01:36 -05:00
Sage Vaillancourt 90f792ff4e More aggressive NPC running
Less aggressive NPC batting :D
Updated Player sprites - now with belt!
2025-02-10 23:25:19 -05:00
Sage Vaillancourt fbbfc3c2e7 Move fielder-draw iteration and dance to fielding.lua
Move PlayerImageBlipper to graphics.lua
2025-02-10 22:36:17 -05:00
Sage Vaillancourt f67d6262ac Fix some NPC positioning.
Basic foul-ball implementation.
Some balance tweaks. Generally faster play.
Move pitchMeter to utils.
Player -> User when talking about the human player instead of a baseball player.
Slightly delay scoreboard changes.
Animate ball-strike entry and exit.
2025-02-10 21:22:21 -05:00
Sage Vaillancourt 534a16ad67 Fix inning switching.
Add onThirdOut() as a baserunning dependency instead of relying on a wrapper function in main
Reset pitchTracker on side-switch
2025-02-10 12:47:24 -05:00
Sage Vaillancourt fc4e12eddd Updated bg and player sprites.
Player is taller now.
Fixed out handling.
2025-02-10 11:24:53 -05:00
Sage Vaillancourt 90fa692303 Fix linting
Use .styluaignore instead of Makefile hacks to ignore generated files.
2025-02-09 14:47:37 -05:00
Sage Vaillancourt 4d69e77d9f Class-ify npc -> Npc
In the future, may keep a small memory of past pitches/plays, and use it to adjust swings, baserunning, etc.
2025-02-09 12:30:53 -05:00
Sage Vaillancourt 575c9e0a18 Explicitly set minimap draw sizes 2025-02-09 12:15:37 -05:00
Sage Vaillancourt 0f83298086 Only draw in-bounds fielders on minimap.
Inject animator into Ball, instead of entire gfx
2025-02-09 12:09:31 -05:00
Sage Vaillancourt 89c37eaf3d Move Fielder type into fielding.lua 2025-02-09 11:50:31 -05:00
Sage Vaillancourt 476e0d54cb Start extracting ball.lua
PseudoAnimator -> SimpleAnimator
2025-02-09 11:49:15 -05:00
Sage Vaillancourt fed1151179 XYPair -> XyPair, throwBall() -> launchBall()
Add Point3d type.
2025-02-09 11:35:19 -05:00
Sage Vaillancourt d74332f685 Store animators directly on the `ball` object 2025-02-09 11:26:24 -05:00
Sage Vaillancourt 9c0d263a29 Class-ify Announcer, Baserunning, and Fielding
Largely to enable dependency injection.
I am pushing AWAY the paranoia that metatable lookups will slow things down. (You've got like 20 entities, bud, chill.)
Field -> Fielding
2025-02-09 11:19:11 -05:00
Sage Vaillancourt aadaa6e0d6 Use : instead of . in self function definitions 2025-02-09 10:31:32 -05:00
Sage Vaillancourt c56cae6527 batter -> baserunning.batter 2025-02-09 10:12:56 -05:00
Sage Vaillancourt 1a68521bd4 Extract baserunning.lua
field.lua -> fielding.lua
npcFielderAction() -> npc.fielderAction()
Generally, a pinch of additional or stricter typing
2025-02-09 10:06:57 -05:00
Sage Vaillancourt 50ddd67730 Start drawing fielders in minimap 2025-02-09 00:04:59 -05:00
Sage Vaillancourt fedf680626 Small action-queue.lua doc-comment tweaks 2025-02-08 22:08:42 -05:00
Sage Vaillancourt 82d1dac5de Buffer player-controlled fielder throws.
Use new actionQueue to do so.
Move thrower and receiver selection into fielder.lua
Correct SOURCE_FILES listing in Makefile
2025-02-08 22:02:29 -05:00
Sage Vaillancourt b119310859 Even further fielder logic extraction.
Also remove some redundant ball-position mutation.
2025-02-08 20:25:30 -05:00
Sage Vaillancourt 30f2eada72 Extract almost all NPC fielding logic 2025-02-08 19:04:10 -05:00
Sage Vaillancourt 80c15161e3 Move more logic into field.lua 2025-02-08 18:28:17 -05:00
Sage Vaillancourt d85db79e52 Make main.lua functions `local`, where possible 2025-02-08 13:36:09 -05:00
Sage Vaillancourt 66bd97499a Try to cluster global state together.
Start peeling out fielder functions into a new file.
A bit more constant use.
In Makefile, parse main.lua imports for source files.
2025-02-08 11:52:39 -05:00
Sage Vaillancourt 324673ea98 Add music + sound effects to assets.lua2p 2025-02-08 09:39:56 -05:00
Sage Vaillancourt 8dc999fd72 Add LuaPreprocess for asset-processing.
Rename image assets to match var names.
2025-02-08 01:53:26 -05:00
Sage Vaillancourt 4a4049996f Much more fleshed-out constants.lua
* Move scoreboard.lua to draw/overlay.lua
* Move minimap drawing into overlay.lua
* Remove playdate imports from utils.lua
2025-02-08 00:49:03 -05:00
Sage Vaillancourt f07530623f Delete unused ecs.lua toy
Add a quick type assertion to outRunner()
2025-02-07 23:56:39 -05:00
Sage Vaillancourt 881ff0e734 Implementing walks and strike-outs
* Look at limiting batting/throw power with math.log()
* Extract draw/fielder.lua
* Extract some values into constants.lua
* Extract npc.lua for computer batting (and eventually probably more CPU behavior)
* pitchTracker in utils
2025-02-07 20:29:40 -05:00
sage 969de111fe Merge pull request 'Properly display balls and strikes' (#3) from proper-balls-and-strikes-display into main
Reviewed-on: #3
Reviewed-by: NikB0t <culvey.nikalas@gmail.com>
2025-02-07 20:11:54 -05:00
Sage Vaillancourt e44bdcb57b magicNumbers = magicNumbers - 1 2025-02-07 14:08:14 -05:00
Sage Vaillancourt 2b436082bb Properly display balls and strikes
But only when the count isn't 0 - 0
2025-02-07 10:34:35 -05:00
sage 9c08990d76 Merge pull request 'Disallow zero-speed bats' (#2) from revert-zero-speed-hits into main
Reviewed-on: #2
2025-02-07 00:53:20 -05:00
Sage Vaillancourt d0f4b9df97 Disallow zero-speed bats 2025-02-07 00:50:49 -05:00
Sage Vaillancourt 9678db167f Hyphen over colon in balls/strikes 2025-02-07 00:47:54 -05:00
sage 16fde510ac Merge pull request 'Skeleton tracking/display of balls and strikes' (#1) from balls-and-strikes into main
Reviewed-on: #1
2025-02-07 00:18:19 -05:00