NRF Guide

Référence

Observation

Trains, voies, signaux, services, horloge et collections observées.

Contexte d’utilisation

ModulePackageSource SDK
Kotlin/JVMfr.nimby.sdkkotlin-client/src/main/kotlin/fr/nimby/sdk/Observation.kt

Signatures extraites de la version 0.8.0-alpha.1. Les paramètres, leurs valeurs par défaut et les propriétés de constructeur sont conservés. Les corps des méthodes ne font pas partie de cette référence.

Train

fr.nimby.sdk · class
data class Train(val id: Long, val name: String, val position: Position?, val speedKmh: Double?, val speedDefaulted: Boolean)

IDs are opaque. Unknown observations are null, never a manufactured clear state.

Position

fr.nimby.sdk · class
data class Position(val trackId: Long, val fraction: Double, val direction: Int)

Track

fr.nimby.sdk · class
data class Track(val id: Long, val stationId: Long?, val speedLimitKmh: Double)

Station

fr.nimby.sdk · class
data class Station(val id: Long, val name: String)

TrackNode

fr.nimby.sdk · class
data class TrackNode(val id: Long, val linkA: Long?, val linkB: Long?, val x: Double, val y: Double)

TrackJunction

fr.nimby.sdk · class
data class TrackJunction(val branchTrackId: Long, val mainTrackId: Long, val fraction: Double, val mainDirection: Int, val branchDirection: Int)

TrackUsage

fr.nimby.sdk · class
data class TrackUsage(val trainId: Long, val trackId: Long, val from: Double, val to: Double)

Signal

fr.nimby.sdk · class
data class Signal(val id: Long, val position: Position, val kind: Int, val textureState: Int?, val specificState: String?, val texturePath: String?)

Service

fr.nimby.sdk · class
data class Service(
    val trainId: Long, val lineName: String?, val status: Int?, val stationId: Long?, val flags: Int,
    val lineId: Long? = null, val stopStationId: Long? = null, val stopIndex: Int? = null,
    val gameEpochSeconds: Long? = null, val gameTimeUs: Long? = null,
    val arrivalTimeUs: Long? = null, val departureTimeUs: Long? = null, val dispatchTimeUs: Long? = null,
)

TrainDetails

fr.nimby.sdk · class
data class TrainDetails(val trainId: Long, val passengers: Int?, val scheduleId: Long?, val shiftId: Long?)

Platform

fr.nimby.sdk · class
data class Platform(val trackId: Long, val stationId: Long?, val name: String?)

LineStop

fr.nimby.sdk · class
data class LineStop(val lineId: Long, val trackId: Long, val stationId: Long?, val index: Int, val arrivalOffsetSeconds: Int?, val departureOffsetSeconds: Int?)

SimulationClock

fr.nimby.sdk · class
data class SimulationClock(val epochSeconds: Long, val ticks: Long)

SimulationClock.toInstant

fr.nimby.sdk · fun
fun toInstant(): java.time.Instant

Native ticks are hundredths of a second; the epoch may precede 1970.

SimulationTimeChange

fr.nimby.sdk · class
data class SimulationTimeChange(val clock: SimulationClock, val interventions: Long)

Observation

fr.nimby.sdk · class
data class Observation(
    val capturedAtMillis: Long,
    val processId: Int,
    val gameHash: String,
    val trains: List<Train>,
    val tracks: List<Track>,
    val stations: List<Station>,
    val nodes: List<TrackNode>,
    val junctions: List<TrackJunction>,
    val signals: List<Signal>,
    val services: List<Service>,
    val details: List<TrainDetails>,
    val platforms: List<Platform>,
    val reservations: List<TrackUsage>?,
    val occupations: List<TrackUsage>?,
    val selectedPath: List<Long>?,
    val lineStops: List<LineStop>?,
    val clock: SimulationClock?,
    /** Null: old DLL or unsupported capture/profile. Missing rows remain unknown. */
    val trackMetrics: List<TrackMetric>? = null,
)

ObservationClient

fr.nimby.sdk · interface
interface ObservationClient : AutoCloseable

ObservationClient.capture

fr.nimby.sdk · fun
fun capture(selectedTrainId: Long? = null): Observation

GameProcess

fr.nimby.sdk · class
data class GameProcess(val pid: Int, val executable: String)

GameProcesses

fr.nimby.sdk · object
object GameProcesses

GameProcesses.discover

fr.nimby.sdk · fun
fun discover(): List<GameProcess> = ProcessHandle.allProcesses().use { processes ->

SdkException

fr.nimby.sdk · class
class SdkException(val status: Int, operation: String) : IllegalStateException("$operation : ${when (status) {
    2 -> "accès au processus ou au fichier impossible"
    7 -> "version du jeu non prise en charge par ce SDK"
    8 -> "observation indisponible"
    11 -> "jeu fermé"
    else -> "erreur SDK $status"
}}")