Référence
Nimby
Point d’entrée du client : connexion et fonctions regroupées par usage dans Game.
Contexte d’utilisation
| Module | Package | Source SDK |
|---|---|---|
| Kotlin/JVM | fr.nimby.sdk | kotlin-client/src/main/kotlin/fr/nimby/sdk/Nimby.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.
Nimby
object NimbyPoint d'entrée d'une application Kotlin. Un mod chargé par le loader utilise le module nimby et n'a pas besoin d'ouvrir cette connexion externe.
Nimby.runningGames
fun runningGames(): List<GameProcess> = GameProcesses.discover()Liste les jeux accessibles sans choisir silencieusement un processus.
Nimby.connect
fun connect(sdk: Path, processId: Int? = null): GameOuvre le SDK indiqué. Sans PID, exige exactement un jeu accessible. La connexion se ferme avec use { game -> … }. Aucun essai de mutation ni injection n'est déclenché par cette ouverture.
Game
class Game : AutoCloseableUne connexion organisée par usage. Les observations sont des copies Kotlin. [advanced] conserve l'accès à toutes les opérations détaillées du transport, sur la même session et avec le même verrou. Ne pas le fermer séparément. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.
Game.advanced
val advanced: NimbyClientGame.trains
val trains: Trains = Trains(advanced)Game.clock
val clock: Clock = Clock(advanced)Game.signals
val signals: Signals = Signals(advanced)Game.mods
val mods: Mods = Mods(advanced)Game.construction
val construction: Construction = Construction(advanced)Game.snapshot
fun snapshot(selectedTrain: Long? = null): Observation = advanced.capture(selectedTrain)Capture complète ; demander seulement le train voulu avec trains.read quand les autres tables ne sont pas nécessaires.
Game.close
override fun close(): Unit = advanced.close()Game.Trains
class TrainsConstruction réservée au SDK : utilisez la fonction de création ou le contexte fourni.
Game.Trains.read
fun read(id: Long): DrivingObservation? = client.readTrain(id)Null signifie absent ou instable, jamais arrêté par défaut.
Game.Clock
class ClockConstruction réservée au SDK : utilisez la fonction de création ou le contexte fourni.
Game.Clock.read
fun read(): SimulationClock? = client.capture().clockLit via une capture complète. Réutiliser snapshot.clock lorsqu'une capture a déjà été réalisée, pour ne pas doubler le coût de lecture.
Game.Clock.set
fun set(utc: Instant, recalculateTrains: Boolean = false): SimulationTimeChange =UTC en secondes entières. Écriture explicite, sans nouvelle tentative.
Game.Signals
class SignalsConstruction réservée au SDK : utilisez la fonction de création ou le contexte fourni.
Game.Signals.showTexture
fun showTexture(id: Long, catalogue: String, image: String, durationMillis: Int): Unit =Affichage seul, de 1 à 60 secondes. Ne change pas une permission.
Game.Signals.restoreTexture
fun restoreTexture(id: Long): Unit = client.restoreSignalTexture(id)Game.Mods
class ModsConstruction réservée au SDK : utilisez la fonction de création ou le contexte fourni.
Game.Mods.status
fun status(id: String): ControlResponse = client.modControl(id, ControlRequest(ControlOperation.Status))Interroge le mod chargé. Une erreur de transport n'est pas une preuve d'absence : l'exception reste visible au programme appelant.
Game.Mods.control
fun control(id: String, leaseMillis: Int = 5000): ModControlSession = client.acquireModControl(id, leaseMillis)Bail explicite pour une recette. Le mod décide des forçages acceptés.
Game.Construction
class ConstructionExpérimental : nécessite le pont de construction séparé. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.
Game.Construction.prepare
fun prepare(sourceSignal: Long): ConstructionResult = client.prepareConstruction(sourceSignal)Game.Construction.create
fun create(token: Long, sourceSignal: Long, positions: List<Position>): ConstructionResult =Game.Construction.poll
fun poll(token: Long): ConstructionResult = client.pollConstruction(token)Game.Construction.undo
fun undo(token: Long): ConstructionResult = client.undoConstruction(token)