21 Commits

Author SHA1 Message Date
de073d7d7a Use CMake option for asset dir instead of command-line flag 2025-01-07 14:36:03 +00:00
2077ecde63 Implement hot reloading 2025-01-06 15:15:32 +00:00
d1fb902e8a Use offset specified in tiled for y-sorting objects
It's now no longer using the bounding box on objects anywhere, but
we're going to want that soon anyway for culling off-screen entities
so I decided to leave it in.
2025-01-04 16:50:44 +00:00
5eff48b449 Use object bounding box for y sorting 2025-01-04 16:14:38 +00:00
48ae6b7873 Load object bounding box from objectsprites XML 2025-01-04 16:14:38 +00:00
3f8ac4f890 Add a bounding box to dynentity_t 2025-01-04 16:14:35 +00:00
080de0da3c Use doubles instead of ints for y sorting 2025-01-04 16:13:49 +00:00
765e2c32c8 Implement drawlist updating for decreasing y 2025-01-04 16:13:47 +00:00
f3c9d6ac30 Implement drawlist updating for increasing y 2025-01-04 13:03:15 +00:00
9325563991 Draw entities using drawlist 2025-01-04 10:32:41 +00:00
56dbf9dbb4 Construct drawlist at end of game_init() 2025-01-04 10:32:13 +00:00
8763c437b3 Add tag and prev, next pointers to entity structs 2025-01-04 10:32:13 +00:00
51cd623af9 Rearrange and rename helper functions 2025-01-04 05:57:25 +00:00
6bd85d9ebf Rename entity_t and obj_t to dynentity_t and objentity_t 2025-01-04 04:51:27 +00:00
77725a5ce4 Round coordinates in collision detection
This fixes an issue where the player could get stuck to an edge when
being aligned to the pixel grid due to the rounded coordinate being
outside an invalid tile but the truncated position being inside.  Also
we should be doing it anyway.
2025-01-04 02:13:40 +00:00
a8e2c8d89a Rename game_evthandle() to game_evt() 2025-01-02 18:52:15 +00:00
8dbdea6ac4 Fix some memory leaks 2025-01-02 17:53:40 +00:00
2c8d01df49 Fix UB in tileat() 2025-01-02 17:16:05 +00:00
65a4b08f34 Use vsync instead of delay-based synchronization
Also changed the game_update() interface to take dt in seconds as a
double (rather than milliseconds as an unsigned integer) as we're now
computing the refresh interval as a double anyway (by querying the
display mode).  To my eye (and on my machine), all chunkiness is now
gone; the game feels very smooth.
2025-01-02 16:54:01 +00:00
e7e1b40dd9 Take ceiling of endx and endy in mapdraw()
This fixes an issue where tiles around the right and bottom edges
would not be drawn when vpos was just under a tile boundary.  I'm
guessing it wasn't noticable before fixing the frame rate as the buggy
frames were only on-screen for a hilariously short amount of time.
2025-01-02 15:43:31 +00:00
d9981d8d61 Rename app/ directory to game/ 2025-01-02 14:21:12 +00:00