Skip to content

fix: keep announced destination exits actionable#119

Merged
Orinks merged 1 commit into
devfrom
codex/issue-113-destination-exit-window
Jul 26, 2026
Merged

fix: keep announced destination exits actionable#119
Orinks merged 1 commit into
devfrom
codex/issue-113-destination-exit-window

Conversation

@Orinks

@Orinks Orinks commented Jul 26, 2026

Copy link
Copy Markdown
Owner

What changed and why

Fixes #113.

Destination-exit speech and X eligibility both recalculated the same speed-dependent approach window. If the truck slowed while the callout was speaking, that window could contract before the player reacted, so the game announced an actionable destination exit and then answered "No exit coming up."

This change gives the exact announced destination exit a keyed 25-second real-time response window. The keyed destination takes priority over nearer optional stops, remains valid only while it is still ahead, and expires cleanly so a closer callout can be announced later. Successful input also stops unfinished event speech before the signaling confirmation. Existing automatic-speed-control behavior is unchanged: the automatic ramp target remains 40 mph, the hard ramp limit remains 45 mph, and control releases on ramp entry.

What players or maintainers will notice

Players using Standard or Fast trip pacing can finish hearing a destination-exit callout and press X without the exit disappearing because their speed changed. Expired, mismatched, and already-passed exits still cannot be armed.

The player manual now correctly distinguishes the 40 mph automatic target from the 45 mph ramp limit.

Tests and checks run

  • Passed focused issue [Bug]: Standard and possibly fast Trip pacing can cause destination exits to be announced before they're close enough to signal for them #113 regression coverage, including Standard at 54 mph and Fast at 56 mph, five real seconds of delayed real pygame X input, timer expiration and closer reannouncement, passed-exit rejection, competing-stop priority, automatic cruise, and downhill ramp entry.
  • Passed the complete driving, playtest-harness, controller, player-manual, and release-note test slice.
  • Passed 103 smoke tests.
  • Passed the complete pytest suite serially on Windows.
  • A parallel full run reached the end but four unrelated audio-heavy workers hit Windows MemoryError; the serial full rerun passed.
  • Passed Ruff, byte compilation, git diff --check, and the release-note gate.
  • Passed a visible desktop playtest with NVDA main speech and dedicated SAPI event speech: the five-mile exit callout was followed about three seconds later by a real X press, "Signaling for exit 116...", and successful ramp entry, with no "No exit coming up."

Accessibility impact

Accessibility Agents lead plus ARIA, keyboard, headings/text, forms/input, live-region, contrast, modal, links, and tables specialists reviewed the final delta and returned SHIP with no open findings. Keyboard X and controller D-pad Down continue through the same exit action path. Spoken confirmation replaces the unfinished event callout instead of overlapping it.

Changelog

  • I added a player-facing bullet under ## Unreleased in CHANGELOG.md, written in plain player language and matching the style of the existing entries.
  • This change is not player-facing, and every commit message in this PR includes [skip changelog].

@Orinks
Orinks marked this pull request as ready for review July 26, 2026 18:19
@Orinks
Orinks merged commit de34943 into dev Jul 26, 2026
5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant