Files
openttd-client/lib/openttd
kovagoadi b33869334a
All checks were successful
Continuous Integration / lint-and-security (pull_request) Successful in 22s
Continuous Integration / tests-and-coverage (pull_request) Successful in 24s
Add vehicle timetable get/set support
Timetables have no GameScript API surface, so this implements real
DoCommands over the game port (ClientCommand/ServerCommand) instead of
the Admin GameScript relay used for list_vehicles(): change_timetable(),
autofill_timetable(), set_timetable_start(), and set_vehicle_on_time()
send commands, while get_vehicle_timetable() reconstructs state purely
by observing ServerCommand broadcasts, since no query command exists.

Includes the custom varuint wire codec these commands require, a full
usage guide (docs/TIMETABLES.md), and a worked demo in main.py.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-07-16 23:21:21 +02:00
..
2026-06-05 23:18:09 +02:00

Internal Package: openttd

This directory contains the core implementation of the OpenTTD network client.

Modules

  • __init__.py: Exposes the high-level OpenTTDClient API.
  • client.py: Implementation of the OpenTTDClient class. Manages the connection lifecycle, PAKE state, map synchronization, and keep-alive.
  • protocol.py: Implementation of the OpenTTDProtocol class. Handles low-level binary packet serialization, AEAD stream encryption, and static packet parsing.

Design Goals

  1. Encapsulation: The user should never need to manually handle bytes or encryption keys.
  2. Robustness: Gracefully handle server errors and unknown packet types.
  3. Efficiency: Use asyncio for non-blocking I/O and monocypher for fast cryptographic operations.