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 |
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.Nimby
import fr.nimby.sdk.Game
import java.nio.file.Path
import java.time.InstantNimby
object NimbyPoint d’entrée d’une application JVM : découvrir les jeux puis ouvrir explicitement une connexion. Un mod Native utilise le contexte fourni par le SDK.
Nimby.runningGames
fun runningGames(): List<GameProcess>Liste les processus de jeu visibles ; ne choisit aucun jeu et ne garantit pas qu’une connexion réussira.
Nimby.connect
fun connect(sdk: Path, processId: Int? = null): GameOuvre le SDK indiqué pour le PID choisi. Sans PID, exige exactement un jeu visible. Retourne Game à fermer avec use ; aucune mutation automatique.
Game
class Game : AutoCloseableConnexion possédée par l’application, regroupée par usage. Utiliser use pour la fermer ; les observations copiées restent lisibles après fermeture. Ne pas construire ce type directement.
Game.advanced
val advanced: NimbyClientClient détaillé de cette même connexion ; ne pas le fermer séparément.
Game.trains
val trains: TrainsLectures ciblées et requêtes de trains.
Game.clock
val clock: ClockLecture et changement explicite de la date du jeu.
Game.signals
val signals: SignalsEssais visuels temporaires de textures de signaux.
Game.mods
val mods: ModsStatut et sessions temporaires de contrôle des mods chargés.
Game.construction
val construction: ConstructionPréparation, création, suivi et annulation de séries expérimentales de signaux.
Game.snapshot
fun snapshot(selectedTrain: Long? = null): ObservationCapture les tables du réseau et les observations usuelles. Un train sélectionné ajoute son chemin et son plan de ligne ; il ne filtre pas la liste des trains. Les tables sont copiées sans garantir un tick atomique.
Game.close
override fun close(): UnitFerme cette connexion et libère ses ressources. Les copies Kotlin déjà retournées restent valables comme anciennes observations ; aucun nouvel appel sur cette connexion.
Game.Trains
class TrainsAccès aux lectures de trains de cette connexion. Obtenir cet objet depuis Game.
Game.Trains.read
fun read(id: Long): DrivingObservation?Lit uniquement le train demandé : position, vitesse mesurée et paramètres de conduite. null si absent ou instable ; les autres échecs lèvent une exception. Le résultat copié reste utilisable après fermeture.
Game.Trains.read
fun read(id: TrainId): DrivingObservation?Lit uniquement le train demandé : position, vitesse mesurée et paramètres de conduite. null si absent ou instable ; les autres échecs lèvent une exception. Le résultat copié reste utilisable après fermeture.
Game.Trains.snapshot
fun snapshot(selectedTrain: TrainId? = null, query: TrainQuery = TrainQuery()): ObservationCapture spécialisée selon TrainQuery, sans topologie complète, signaux, occupations ni réservations. selectedTrain demande en plus son plan et les données de service/horaires ; la liste des trains reste un lot.
Game.Clock
class ClockAccès à l’horloge du jeu de cette connexion. Obtenir cet objet depuis Game.
Game.Clock.read
fun read(): SimulationClock?Lit l’horloge du jeu sans demander les grandes tables de la carte avec le SDK courant. null si indisponible. Réutiliser snapshot.clock lorsqu’une capture existe déjà.
Game.Clock.set
fun set(utc: Instant, recalculateTrains: Boolean = false): SimulationTimeChangeChange explicitement la date UTC, en secondes entières. Conserve la fraction de seconde. recalculateTrains demande aussi le recalcul des trains, avec interventions possibles. En cas d’échec, relire avant toute nouvelle écriture.
Game.Signals
class SignalsActions d’affichage uniquement ; ne modifient pas les permissions de mouvement. Obtenir cet objet depuis Game.
Game.Signals.showTexture
fun showTexture(id: Long, catalogue: String, image: String, durationMillis: Int): UnitAffiche l’image déclarée du catalogue pendant 1 000 à 60 000 ms. Identité de signal réelle et chemins non vides requis. Modifie l’apparence seule, jamais les règles ni permissions.
Game.Signals.restoreTexture
fun restoreTexture(id: Long): UnitRetire le remplacement visuel temporaire demandé pour ce signal ; ne réécrit aucune règle du mod.
Game.Mods
class ModsContrôle explicite des mods présents dans la partie connectée. Obtenir cet objet depuis Game.
Game.Mods.status
fun status(id: String): ControlResponseInterroge une fois le mod chargé dans cette partie. Les compteurs décrivent des forçages temporaires, pas tous les signaux gérés. Une exception n’est pas une preuve d’absence du mod.
Game.Mods.control
fun control(id: String, leaseMillis: Int = 5000): ModControlSessionAcquiert un bail explicite de 1 000 à 60 000 ms auprès d’un mod ayant observé la partie. Fermer avec use ; renouvellement et reprises ne sont jamais automatiques.
Game.Construction
class ConstructionConstruction expérimentale par tickets ; chaque écriture doit être confirmée et suivie. Obtenir cet objet depuis Game.
Game.Construction.prepare
fun prepare(sourceSignal: Long): ConstructionResultPrépare une série à partir d’un signal source observé et retourne son ticket/état. N’ajoute pas de signal. Revalider le plan confirmé après préparation et avant création.
Game.Construction.create
fun create(token: Long, sourceSignal: Long, positions: List<Position>): ConstructionResultEnvoie une création unique avec un ticket préparé et 1 à 64 positions distinctes. Fractions strictement entre 0 et 1, sens -1 ou 1. Conserver le ticket et consulter poll après PENDING ou réponse incertaine ; ne pas répéter create.
Game.Construction.poll
fun poll(token: Long): ConstructionResultRelit l’état du ticket existant sans répéter sa création ou son annulation. Utiliser un ticket non nul de la même partie/session d’édition.
Game.Construction.undo
fun undo(token: Long): ConstructionResultDemande une seule annulation de la série. Peut être refusée si une autre commande a remplacé la dernière opération annulable. Vérifier état et canUndo ; suivre une réponse incertaine avec poll.