e1eb9cc7cdd13d334f20c227fb395e60244d0d9c
Terminals don't send Release events for most keys, so held keys stayed active forever. Two problems: 1. W = infinite jump: Jump was in held_actions, fired every tick while held. check_on_ground returned true immediately after landing, causing auto-bounce. Fix: Jump fires only on initial Press event (jump_pressed flag), not on Repeat or held state. 2. A ignores D: When both A and D were held, both applied velocity and cancelled out. But terminal never sends Release for A, so D couldn't take over. Fix: Left/Right are mutually exclusive — most recently pressed key wins (compares last_seen timestamps). 3. Held key timeout: Keys expire after 80ms without a Repeat event, simulating Release for terminals that don't send it. 109 tests, 0 warnings, 0 failures
Description
ASCII physical game
1.9 MiB
Languages
Rust
98.6%
GLSL
1%
Python
0.4%