NRF SDK 0.9

Référence

TrainTypes · Kotlin/JVM

Identifiants typés, options de lecture et caractéristiques du matériel.

Contexte d’utilisation

ModulePackageSource SDK
Kotlin/JVMfr.nimby.sdkkotlin-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.

Imports de cette page
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.TrainVehicle

Choisir 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 TrainQueryPar défautDonnées demandées
includeServicetrueÉtat, service et affectation observés.
includeLocationstruePositions et références de localisation nécessaires.
includeCharacteristicsfalseProfils du matériel configuré et actuel.
includeTimetablesfalseInformations d’horaires disponibles ; implique includeService.
includeTagsfalseTags déclarés et références pour leur héritage ; implique includeLines.
includePassengersfalseOccupants observés, distincts de la capacité.
includeLinesfalseCatalogue des lignes, y compris celles sans train affecté.
includeCompositionfalseVéhicules ordonnés des compositions configurée et actuelle et modèles référencés.
ValeurUnité et contrat
Train.speedMps / Train.speedKmhVitesse actuelle. Native : une mesure indisponible reste null. JVM : vérifier aussi speedDefaulted avant d’interpréter une valeur de secours comme une mesure.
maximumSpeedMps / maximumSpeedKmhVitesse maximale du matériel, en m/s ou km/h ; distincte de la vitesse actuelle et de la limite de voie.
lengthM / emptyMassKg / maximumAccelerationMps2Mètres, kilogrammes, mètres par seconde carrée.
powerW / tractiveForceNWatts et newtons.
passengers / passengerCapacity / carCountOccupants, capacité et nombre de véhicules : trois quantités distinctes.
configured / current / compositionProfils indépendants, sans remplacement des valeurs absentes. Composition null : inconnue ou non demandée ; liste vide : composition observée vide.
predictedArrivalDelayUs / predictedArrivalDelaySecondsEstimation signée, en microsecondes ou secondes ; négative pour une arrivée prévue en avance. Ni âge d’échéance ni priorité.
arrivalOffsetSeconds / departureOffsetSecondsOffsets validés, en secondes depuis l’origine du plan de ligne. Ne pas les convertir en date absolue d’un train.
arrivalTimeUs / departureTimeUs / dispatchRetryTimeUsMicrosecondes depuis l’origine de simulation, pas depuis 1970. Utiliser les helpers de calendrier ; une date reste null si l’origine est inconnue.
capturedAtMillis / ageMillisHeure 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

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val includeService: Boolean = true

Demande l’état et le service des trains. Activé par défaut ; les horaires impliquent aussi cette lecture.

TrainQuery.includeLocations

fr.nimby.sdk · val
val includeLocations: Boolean = true

Demande 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

fr.nimby.sdk · val
val includeCharacteristics: Boolean = false

Demande séparément les caractéristiques configurées et actuelles du matériel. Désactivé par défaut.

TrainQuery.includeTimetables

fr.nimby.sdk · val
val includeTimetables: Boolean = false

Demande 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.includeTags

fr.nimby.sdk · val
val includeTags: Boolean = false

Demande les tags des trains et le catalogue des tags/lignes nécessaire aux jointures ; implique includeLines.

TrainQuery.includePassengers

fr.nimby.sdk · val
val includePassengers: Boolean = false

Demande le nombre d’occupants ; indépendant de la capacité du matériel.

TrainQuery.includeLines

fr.nimby.sdk · val
val includeLines: Boolean = false

Demande le catalogue des lignes, y compris celles sans train affecté. Ne demande pas les tags à lui seul.

TrainQuery.includeComposition

fr.nimby.sdk · val
val includeComposition: Boolean = false

Demande les véhicules ordonnés et les modèles référencés des compositions configurée et actuelle. Les groupes restent facultatifs.

TrainId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val value: Long

Valeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.

LineId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val value: Long

Valeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.

StationId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val value: Long

Valeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.

TrackId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val value: Long

Valeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.

TimetableId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val value: Long

Valeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.

TimetableShiftId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val timetableId: TimetableId

Horaire auquel appartient ce service.

TimetableShiftId.value

fr.nimby.sdk · val
val value: Long

Clé opaque du service, unique seulement au sein de timetableId.

TagId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val value: Long

Valeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.

VehicleModelId

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val value: Long

Valeur opaque à comparer et transmettre telle quelle ; ne pas la découper ni la réutiliser dans une autre partie.

LineType

fr.nimby.sdk · class
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

fr.nimby.sdk · enum-entry
Depot

Ligne identifiée comme dépôt.

LineType.Other

fr.nimby.sdk · enum-entry
Other

Ligne observée autre que dépôt ; sa catégorie commerciale n’est pas déterminée.

Timetable

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val id: TimetableId

Identité de l’horaire observé.

Timetable.name

fr.nimby.sdk · val
val name: String? = null

Le SDK expose actuellement l’identité de l’horaire, sans résoudre son nom ; null n’est pas un nom vide.

Tag

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val id: TagId

Identité du tag, indépendante de son libellé.

Tag.name

fr.nimby.sdk · val
val name: String?

Nom observé, éventuellement absent ; ne pas l’utiliser comme clé stable.

Line

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val id: LineId

Identité typée de la ligne.

Line.name

fr.nimby.sdk · val
val name: String?

Nom observé, optionnel ; pas une clé de jointure.

Line.type

fr.nimby.sdk · val
val type: LineType?

Depot ou Other quand la classification est connue ; null sinon.

Line.parentId

fr.nimby.sdk · val
val parentId: LineId?

Identité du parent ; lire parentInformationAvailable avant d’interpréter null.

Line.parentInformationAvailable

fr.nimby.sdk · val
val parentInformationAvailable: Boolean

true : l’information de parent a été observée, y compris l’absence de parent. false : un parent absent reste inconnu.

Line.declaredTags

fr.nimby.sdk · val
val declaredTags: List<Tag>?

Tags déclarés directement sur cet objet, sans héritage implicite. null : indisponibles ou non demandés ; liste vide : aucun tag déclaré observé.

TrainMetadata

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val trainId: TrainId

Identité typée du train à joindre dans la même capture.

TrainMetadata.predictedArrivalDelayUs

fr.nimby.sdk · val
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.declaredTags

fr.nimby.sdk · val
val declaredTags: List<Tag>? = null

Tags déclarés directement sur cet objet, sans héritage implicite. null : indisponibles ou non demandés ; liste vide : aucun tag déclaré observé.

TrainMetadata.configured

fr.nimby.sdk · val
val configured: TrainCharacteristics? = null

Profil configuré/acheté du train, demandé explicitement. Indépendant du matériel actuel : ses valeurs ne remplacent pas celles qui manquent dans current.

TrainMetadata.current

fr.nimby.sdk · val
val current: TrainCharacteristics? = null

Caractéristiques de la composition actuelle, si observables et demandées. Ne pas les remplacer par le profil configuré.

TrainMetadata.predictedArrivalDelaySeconds

fr.nimby.sdk · val
val predictedArrivalDelaySeconds: Double?

Même estimation d’arrivée, convertie de microsecondes en secondes ; conserve le signe et null.

Stop

fr.nimby.sdk · typealias
typealias Stop = LineStop

Autre nom de LineStop, avec le même contrat d’offsets relatifs.

TrainCharacteristics

fr.nimby.sdk · class
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

fr.nimby.sdk · val
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

fr.nimby.sdk · val
val lengthM: Double?

Longueur du matériel en mètres ; null si non prouvée.

TrainCharacteristics.emptyMassKg

fr.nimby.sdk · val
val emptyMassKg: Double?

Masse à vide en kilogrammes ; ne représente pas la masse chargée.

TrainCharacteristics.passengerCapacity

fr.nimby.sdk · val
val passengerCapacity: Int?

Capacité en voyageurs de ce profil, optionnelle ; différente des occupants actuellement transportés.

TrainCharacteristics.carCount

fr.nimby.sdk · val
val carCount: Int?

Nombre de véhicules de ce profil, optionnel ; ne déduire ni capacité ni longueur de ce nombre seul.

TrainCharacteristics.maximumAccelerationMps2

fr.nimby.sdk · val
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

fr.nimby.sdk · val
val powerW: Double?

Puissance déclarée en watts, optionnelle ; pas une consommation électrique observée.

TrainCharacteristics.tractiveForceN

fr.nimby.sdk · val
val tractiveForceN: Double?

Force de traction déclarée en newtons, optionnelle.

TrainCharacteristics.composition

fr.nimby.sdk · val
val composition: List<TrainVehicle>? = null

Vé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

fr.nimby.sdk · val
val maximumSpeedKmh: Double?

maximumSpeedMps multiplié par 3,6 ; null reste null.

VehicleModel

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val id: VehicleModelId

Identité du modèle de véhicule.

VehicleModel.code

fr.nimby.sdk · val
val code: String?

Code observé du modèle, optionnel.

VehicleModel.nameEnglish

fr.nimby.sdk · val
val nameEnglish: String?

Nom anglais du catalogue ; ne suit pas automatiquement la langue de l’outil.

VehicleModel.sourceName

fr.nimby.sdk · val
val sourceName: String?

Nom de la source du modèle rapporté par le catalogue, optionnel.

TrainVehicle

fr.nimby.sdk · class
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

fr.nimby.sdk · val
val index: Int

Position à partir de zéro dans la composition observée.

TrainVehicle.model

fr.nimby.sdk · val
val model: VehicleModel

Modèle associé à ce véhicule ; ses libellés peuvent rester inconnus.

TrainVehicle.modelId

fr.nimby.sdk · val
val modelId: VehicleModelId

Identifiant du modèle, identique à model.id.