Référence
TrainTypes · Kotlin/JVM
Identifiants typés, options de lecture et caractéristiques du matériel.
Contexte d’utilisation
| Module | Package | Source SDK |
|---|---|---|
| Kotlin/JVM | fr.nimby.sdk | kotlin-client/src/main/kotlin/fr/nimby/sdk/TrainTypes.kt |
API publique du SDK 0.9.0-alpha.2. Chaque entrée donne la signature Kotlin et son contrat : sens de la valeur, conditions d’utilisation et effets à connaître. Choisissez les imports du module indiqué ci-dessus.
import fr.nimby.sdk.TrainQuery
import fr.nimby.sdk.TrainId
import fr.nimby.sdk.LineId
import fr.nimby.sdk.StationId
import fr.nimby.sdk.TrackId
import fr.nimby.sdk.TimetableId
import fr.nimby.sdk.TimetableShiftId
import fr.nimby.sdk.TagId
import fr.nimby.sdk.VehicleModelId
import fr.nimby.sdk.LineType
import fr.nimby.sdk.Timetable
import fr.nimby.sdk.Tag
import fr.nimby.sdk.Line
import fr.nimby.sdk.TrainMetadata
import fr.nimby.sdk.Stop
import fr.nimby.sdk.TrainCharacteristics
import fr.nimby.sdk.VehicleModel
import fr.nimby.sdk.TrainVehicleChoisir la lecture et interpréter les résultats
Dans un mod, utiliser ToolContext.trains(query). Dans une application JVM, utiliser game.trains.snapshot(query = query) ; sélectionner un train demande aussi son plan de ligne. Une requête groupe tous les trains : ne pas créer une capture par train. La lecture de l’horloge et la lecture ciblée d’un train sont séparées.
| Option TrainQuery | Par défaut | Données demandées |
|---|---|---|
| includeService | true | État, service et affectation observés. |
| includeLocations | true | Positions et références de localisation nécessaires. |
| includeCharacteristics | false | Profils du matériel configuré et actuel. |
| includeTimetables | false | Informations d’horaires disponibles ; implique includeService. |
| includeTags | false | Tags déclarés et références pour leur héritage ; implique includeLines. |
| includePassengers | false | Occupants observés, distincts de la capacité. |
| includeLines | false | Catalogue des lignes, y compris celles sans train affecté. |
| includeComposition | false | Véhicules ordonnés des compositions configurée et actuelle et modèles référencés. |
| Valeur | Unité et contrat |
|---|---|
| Train.speedMps / Train.speedKmh | Vitesse actuelle. Native : une mesure indisponible reste null. JVM : vérifier aussi speedDefaulted avant d’interpréter une valeur de secours comme une mesure. |
| maximumSpeedMps / maximumSpeedKmh | Vitesse maximale du matériel, en m/s ou km/h ; distincte de la vitesse actuelle et de la limite de voie. |
| lengthM / emptyMassKg / maximumAccelerationMps2 | Mètres, kilogrammes, mètres par seconde carrée. |
| powerW / tractiveForceN | Watts et newtons. |
| passengers / passengerCapacity / carCount | Occupants, capacité et nombre de véhicules : trois quantités distinctes. |
| configured / current / composition | Profils indépendants, sans remplacement des valeurs absentes. Composition null : inconnue ou non demandée ; liste vide : composition observée vide. |
| predictedArrivalDelayUs / predictedArrivalDelaySeconds | Estimation signée, en microsecondes ou secondes ; négative pour une arrivée prévue en avance. Ni âge d’échéance ni priorité. |
| arrivalOffsetSeconds / departureOffsetSeconds | Offsets validés, en secondes depuis l’origine du plan de ligne. Ne pas les convertir en date absolue d’un train. |
| arrivalTimeUs / departureTimeUs / dispatchRetryTimeUs | Microsecondes depuis l’origine de simulation, pas depuis 1970. Utiliser les helpers de calendrier ; une date reste null si l’origine est inconnue. |
| capturedAtMillis / ageMillis | Heure UTC de l’ordinateur / âge monotone lors de la copie ; distincts du calendrier du jeu. |
Les identifiants typés sont opaques. TimetableShiftId est unique seulement avec son TimetableId. LineType distingue uniquement Depot et Other ; aucune catégorie voyageurs/fret n’est inférée. Un nom d’horaire indisponible reste null. Les tags sont des libellés, sans priorité automatique ; un héritage incomplet ou cyclique reste inconnu. VehicleModel.nameEnglish conserve le nom anglais du catalogue.
TrainVehicle décrit un véhicule dans une composition. Le type nimby.Vehicle utilisé par le calcul de conduite est un autre contrat. Ne pas mélanger les classes homonymes des packages nimby et fr.nimby.sdk.
TrainQuery
data class TrainQuery(val includeService: Boolean = true, val includeLocations: Boolean = true,
val includeCharacteristics: Boolean = false, val includeTimetables: Boolean = false,
val includeTags: Boolean = false, val includePassengers: Boolean = false, val includeLines: Boolean = false,
val includeComposition: Boolean = false)Options d’une lecture de trains. Demander uniquement les groupes utiles ; les options sélectionnent des données, pas un sous-ensemble de trains.
TrainQuery.includeService
val includeService: Boolean = trueDemande l’état et le service des trains. Activé par défaut ; les horaires impliquent aussi cette lecture.
TrainQuery.includeLocations
val includeLocations: Boolean = trueDemande les données de localisation et leurs gares/voies. Activé par défaut. Les horaires impliquent aussi ces données ; false ne garantit pas leur absence dans une capture couvrante.
TrainQuery.includeCharacteristics
val includeCharacteristics: Boolean = falseDemande séparément les caractéristiques configurées et actuelles du matériel. Désactivé par défaut.
TrainQuery.includeTimetables
val includeTimetables: Boolean = falseDemande affectations et données d’horaires disponibles ; implique le service ainsi que les voies/gares, même si includeLocations vaut false. N’invente ni nom ni passages futurs.
TrainQuery.includePassengers
val includePassengers: Boolean = falseDemande le nombre d’occupants ; indépendant de la capacité du matériel.
TrainQuery.includeLines
val includeLines: Boolean = falseDemande le catalogue des lignes, y compris celles sans train affecté. Ne demande pas les tags à lui seul.
TrainQuery.includeComposition
val includeComposition: Boolean = falseDemande les véhicules ordonnés et les modèles référencés des compositions configurée et actuelle. Les groupes restent facultatifs.
TrainId
data class TrainId(val value: Long)Identifiant typé de train, copié du jeu. Son type empêche les jointures entre objets différents ; aucune catégorie métier n’est encodée pour le mod.
TrainId.value
val value: LongValeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.
LineId
data class LineId(val value: Long)Identifiant typé de ligne, copié du jeu. Son type empêche les jointures entre objets différents ; aucune catégorie métier n’est encodée pour le mod.
LineId.value
val value: LongValeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.
StationId
data class StationId(val value: Long)Identifiant typé de gare, copié du jeu. Son type empêche les jointures entre objets différents ; aucune catégorie métier n’est encodée pour le mod.
StationId.value
val value: LongValeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.
TrackId
data class TrackId(val value: Long)Identifiant typé de voie, copié du jeu. Son type empêche les jointures entre objets différents ; aucune catégorie métier n’est encodée pour le mod.
TrackId.value
val value: LongValeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.
TimetableId
data class TimetableId(val value: Long)Identifiant typé de horaire, copié du jeu. Son type empêche les jointures entre objets différents ; aucune catégorie métier n’est encodée pour le mod.
TimetableId.value
val value: LongValeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.
TimetableShiftId
data class TimetableShiftId(val timetableId: TimetableId, val value: Long)Identité d’un service dans son horaire. La valeur seule n’est pas unique : comparer le couple timetableId et value.
TimetableShiftId.timetableId
val timetableId: TimetableIdHoraire auquel appartient ce service.
TimetableShiftId.value
val value: LongClé opaque du service, unique seulement au sein de timetableId.
TagId
data class TagId(val value: Long)Identifiant typé de tag, copié du jeu. Son type empêche les jointures entre objets différents ; aucune catégorie métier n’est encodée pour le mod.
TagId.value
val value: LongValeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.
VehicleModelId
data class VehicleModelId(val value: Long)Identifiant typé de modèle de véhicule, copié du jeu. Son type empêche les jointures entre objets différents ; aucune catégorie métier n’est encodée pour le mod.
VehicleModelId.value
val value: LongValeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.
LineType
enum class LineType {
Depot,
Other
}Classification limitée aux lignes de dépôt et aux autres lignes ; aucune catégorie voyageurs/fret n’est déduite.
LineType.Depot
DepotLigne identifiée comme dépôt.
LineType.Other
OtherLigne observée autre que dépôt ; sa catégorie commerciale n’est pas déterminée.
Timetable
data class Timetable(val id: TimetableId, val name: String? = null)Horaire identifié depuis l’affectation d’un train. Ce type ne contient pas un programme complet de passages.
Timetable.id
val id: TimetableIdIdentité de l’horaire observé.
Timetable.name
val name: String? = nullLe SDK expose actuellement l’identité de l’horaire, sans résoudre son nom ; null n’est pas un nom vide.
Tag
data class Tag(val id: TagId, val name: String?)Libellé de classement. Comparer l’identifiant ; le nom peut changer. Aucun tag ne déclenche une priorité ou une régulation automatique.
Tag.id
val id: TagIdIdentité du tag, indépendante de son libellé.
Tag.name
val name: String?Nom observé, éventuellement absent ; ne pas l’utiliser comme clé stable.
Line
data class Line(val id: LineId, val name: String?, val type: LineType?, val parentId: LineId?,
val parentInformationAvailable: Boolean, val declaredTags: List<Tag>?)Ligne du catalogue enrichi. Les informations de parent et de tags sont indépendantes du nom ; aucune catégorie commerciale n’est déduite.
Line.id
val id: LineIdIdentité typée de la ligne.
Line.name
val name: String?Nom observé, optionnel ; pas une clé de jointure.
Line.type
val type: LineType?Depot ou Other quand la classification est connue ; null sinon.
Line.parentId
val parentId: LineId?Identité du parent ; lire parentInformationAvailable avant d’interpréter null.
TrainMetadata
data class TrainMetadata(val trainId: TrainId, val predictedArrivalDelayUs: Long?, val declaredTags: List<Tag>? = null,
val configured: TrainCharacteristics? = null, val current: TrainCharacteristics? = null)Métadonnées demandées explicitement pour un train : estimation d’arrivée, tags et profils matériels. Chaque groupe conserve sa disponibilité.
TrainMetadata.trainId
val trainId: TrainIdIdentité typée du train à joindre dans la même capture.
TrainMetadata.predictedArrivalDelayUs
val predictedArrivalDelayUs: Long?Retard d’arrivée estimé par le jeu, en microsecondes signées ; négatif pour une arrivée prévue en avance. null si inconnu. Ce n’est ni l’âge d’une échéance ni une priorité.
TrainMetadata.configured
val configured: TrainCharacteristics? = nullProfil configuré/acheté du train, demandé explicitement. Indépendant du matériel actuel : ses valeurs ne remplacent pas celles qui manquent dans current.
TrainMetadata.current
val current: TrainCharacteristics? = nullCaractéristiques de la composition actuelle, si observables et demandées. Ne pas les remplacer par le profil configuré.
TrainMetadata.predictedArrivalDelaySeconds
val predictedArrivalDelaySeconds: Double?Même estimation d’arrivée, convertie de microsecondes en secondes ; conserve le signe et null.
Stop
typealias Stop = LineStopAutre nom de LineStop, avec le même contrat d’offsets relatifs.
TrainCharacteristics
data class TrainCharacteristics(val maximumSpeedMps: Double?, val lengthM: Double?, val emptyMassKg: Double?,
val passengerCapacity: Int?, val carCount: Int?, val maximumAccelerationMps2: Double?, val powerW: Double?, val tractiveForceN: Double?,
val composition: List<TrainVehicle>? = null)Caractéristiques copiées d’un profil du matériel, en unités SI. Chaque champ peut être inconnu indépendamment des autres ; ni vitesse instantanée, ni priorité.
TrainCharacteristics.maximumSpeedMps
val maximumSpeedMps: Double?Limite du matériel en mètres par seconde, optionnelle ; différente de la vitesse mesurée et de la limite de voie.
TrainCharacteristics.lengthM
val lengthM: Double?Longueur du matériel en mètres ; null si non prouvée.
TrainCharacteristics.emptyMassKg
val emptyMassKg: Double?Masse à vide en kilogrammes ; ne représente pas la masse chargée.
TrainCharacteristics.passengerCapacity
val passengerCapacity: Int?Capacité en voyageurs de ce profil, optionnelle ; différente des occupants actuellement transportés.
TrainCharacteristics.carCount
val carCount: Int?Nombre de véhicules de ce profil, optionnel ; ne déduire ni capacité ni longueur de ce nombre seul.
TrainCharacteristics.maximumAccelerationMps2
val maximumAccelerationMps2: Double?Accélération maximale déclarée, en mètres par seconde carrée ; pas une accélération mesurée.
TrainCharacteristics.powerW
val powerW: Double?Puissance déclarée en watts, optionnelle ; pas une consommation électrique observée.
TrainCharacteristics.tractiveForceN
val tractiveForceN: Double?Force de traction déclarée en newtons, optionnelle.
TrainCharacteristics.composition
val composition: List<TrainVehicle>? = nullVéhicules dans leur ordre observé. null : inconnus ou non demandés ; liste vide : composition observée vide. Les répétitions d’un modèle sont significatives.
TrainCharacteristics.maximumSpeedKmh
val maximumSpeedKmh: Double?maximumSpeedMps multiplié par 3,6 ; null reste null.
VehicleModel
data class VehicleModel(val id: VehicleModelId, val code: String?, val nameEnglish: String?, val sourceName: String?)Modèle référencé par une composition. Le catalogue est limité aux modèles observés ; il ne classe pas les trains en voyageurs ou fret.
VehicleModel.id
val id: VehicleModelIdIdentité du modèle de véhicule.
VehicleModel.code
val code: String?Code observé du modèle, optionnel.
VehicleModel.nameEnglish
val nameEnglish: String?Nom anglais du catalogue ; ne suit pas automatiquement la langue de l’outil.
VehicleModel.sourceName
val sourceName: String?Nom de la source du modèle rapporté par le catalogue, optionnel.
TrainVehicle
data class TrainVehicle(val index: Int, val model: VehicleModel)Un véhicule à un emplacement précis d’une composition ; plusieurs véhicules peuvent partager le même modèle.
TrainVehicle.index
val index: IntPosition à partir de zéro dans la composition observée.
TrainVehicle.model
val model: VehicleModelModèle associé à ce véhicule ; ses libellés peuvent rester inconnus.
TrainVehicle.modelId
val modelId: VehicleModelIdIdentifiant du modèle, identique à model.id.