NRF SDK 0.9

Référence

ModControl

Baux de recette, commandes temporaires et réponses du mod.

Contexte d’utilisation

ModulePackageSource SDK
Kotlin/JVMfr.nimby.sdkkotlin-client/src/main/kotlin/fr/nimby/sdk/ModControl.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.ControlOperation
import fr.nimby.sdk.TrainControlMode
import fr.nimby.sdk.TrainControlState
import fr.nimby.sdk.ControlRequest
import fr.nimby.sdk.ControlResponse
import fr.nimby.sdk.ModControlSession

ControlOperation

fr.nimby.sdk · class
enum class ControlOperation(val code: Int) {
    Status(0),
    Acquire(1),
    Renew(2),
    Release(3),
    ForceSignal(4),
    RestoreSignal(5),
    Train(6),
    RestoreTrain(7),
    Setting(8),
    RestoreSetting(9),
    Clear(10),
    ReadSignal(11),
    ReadTrain(12)
}

Opérations de contrôle temporaire. Préférer les méthodes de ModControlSession ; les codes d’aspect et indices de case sont définis par le mod ciblé.

ControlOperation.code

fr.nimby.sdk · val
val code: Int

Code de l’opération transmis par le client ; utiliser l’enum, sans fabriquer une valeur numérique.

ControlOperation.Status

fr.nimby.sdk · enum-entry
Status(0)

Lire le statut et les compteurs de forçages du mod.

ControlOperation.Acquire

fr.nimby.sdk · enum-entry
Acquire(1)

Acquérir le bail temporaire de contrôle.

ControlOperation.Renew

fr.nimby.sdk · enum-entry
Renew(2)

Renouveler explicitement le bail existant.

ControlOperation.Release

fr.nimby.sdk · enum-entry
Release(3)

Libérer le bail et ses forçages.

ControlOperation.ForceSignal

fr.nimby.sdk · enum-entry
ForceSignal(4)

Demander un aspect temporaire accepté par le mod.

ControlOperation.RestoreSignal

fr.nimby.sdk · enum-entry
RestoreSignal(5)

Retirer le forçage d’un signal.

ControlOperation.Train

fr.nimby.sdk · enum-entry
Train(6)

Demander une contrainte temporaire sur un train.

ControlOperation.RestoreTrain

fr.nimby.sdk · enum-entry
RestoreTrain(7)

Retirer la contrainte temporaire du train.

ControlOperation.Setting

fr.nimby.sdk · enum-entry
Setting(8)

Forcer temporairement une case de réglage.

ControlOperation.RestoreSetting

fr.nimby.sdk · enum-entry
RestoreSetting(9)

Retirer le forçage de cette case.

ControlOperation.Clear

fr.nimby.sdk · enum-entry
Clear(10)

Retirer tous les forçages du bail, sans renouvellement automatique.

ControlOperation.ReadSignal

fr.nimby.sdk · enum-entry
ReadSignal(11)

Lire la dernière décision évaluée du signal.

ControlOperation.ReadTrain

fr.nimby.sdk · enum-entry
ReadTrain(12)

Lire l’état de la contrainte du train ; pas une permission.

TrainControlMode

fr.nimby.sdk · class
enum class TrainControlMode(val code: Int) {
    SpeedLimit(0),
    PhysicalClearance(1),
    Stop(2)
}

Mode d’une contrainte de recette temporaire. La vitesse doit être finie et positive sauf Stop, qui exige zéro. Les protections du jeu restent applicables.

TrainControlMode.code

fr.nimby.sdk · val
val code: Int

Code du mode utilisé par le client ; choisir une valeur nommée de l’enum.

TrainControlMode.SpeedLimit

fr.nimby.sdk · enum-entry
SpeedLimit(0)

Plafond numérique de vitesse, sans demande de marche avec dégagement physique.

TrainControlMode.PhysicalClearance

fr.nimby.sdk · enum-entry
PhysicalClearance(1)

Plafond de vitesse avec contrôle de dégagement physique ; ne promet pas un passage contre toute autre protection.

TrainControlMode.Stop

fr.nimby.sdk · enum-entry
Stop(2)

Contrainte d’arrêt, avec speedMps égal à zéro.

TrainControlState

fr.nimby.sdk · class
enum class TrainControlState {
    Absent,
    AwaitingExit,
    Active,
    Completed,
    Cancelled
}

État observé d’une contrainte de train. La valeur renvoyée par readTrain.active correspond à cette enum ; aucun état n’est une permission native de mouvement.

TrainControlState.Absent

fr.nimby.sdk · enum-entry
Absent

Aucune contrainte rapportée.

TrainControlState.AwaitingExit

fr.nimby.sdk · enum-entry
AwaitingExit

Contrainte en attente de rattachement à sa sortie ; peut aussi signaler une demande pas encore observée comme appliquée.

TrainControlState.Active

fr.nimby.sdk · enum-entry
Active

Contrainte observée active.

TrainControlState.Completed

fr.nimby.sdk · enum-entry
Completed

Contrainte observée terminée.

TrainControlState.Cancelled

fr.nimby.sdk · enum-entry
Cancelled

Contrainte annulée après réinitialisation du trajet.

ControlRequest

fr.nimby.sdk · class
data class ControlRequest(
    val operation: ControlOperation, val owner: Long = 0, val generation: Long = 0,
    val leaseMillis: Int = 0, val objectId: Long = 0, val exitSignal: Long = 0,
    val speedMps: Double = 0.0, val mode: TrainControlMode = TrainControlMode.SpeedLimit,
    val releaseByRear: Boolean = false, val value: Int = 0, val settingIndex: Int = 0
)

Demande détaillée de contrôle. Pour les recettes ordinaires, ModControlSession renseigne owner et generation et fournit les méthodes nommées. Ne pas fabriquer une identité de bail.

ControlRequest.operation

fr.nimby.sdk · val
val operation: ControlOperation

Action demandée ; détermine les champs utiles.

ControlRequest.owner

fr.nimby.sdk · val
val owner: Long = 0

Identité opaque non nulle du bail pour une mutation ; fournie par la session de contrôle.

ControlRequest.generation

fr.nimby.sdk · val
val generation: Long = 0

Génération du monde observée par le mod ; doit correspondre au bail.

ControlRequest.leaseMillis

fr.nimby.sdk · val
val leaseMillis: Int = 0

Durée de bail demandée pour Acquire/Renew, de 1 000 à 60 000 ms.

ControlRequest.objectId

fr.nimby.sdk · val
val objectId: Long = 0

Identité observée du signal ou train ciblé, selon l’opération.

ControlRequest.exitSignal

fr.nimby.sdk · val
val exitSignal: Long = 0

Signal de sortie associé à la contrainte, ou zéro si aucune sortie explicite n’est fournie.

ControlRequest.speedMps

fr.nimby.sdk · val
val speedMps: Double = 0.0

Plafond demandé en m/s : zéro pour Stop, strictement positif pour les autres modes.

ControlRequest.mode

fr.nimby.sdk · val
val mode: TrainControlMode = TrainControlMode.SpeedLimit

Mode explicite de la contrainte de train.

ControlRequest.releaseByRear

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

true : libération après passage de la queue à la sortie ; false : après la tête.

ControlRequest.value

fr.nimby.sdk · val
val value: Int = 0

Code d’aspect pour ForceSignal ; 0/1 pour Setting. Sa signification dépend de l’opération et du mod.

ControlRequest.settingIndex

fr.nimby.sdk · val
val settingIndex: Int = 0

Indice de case du modèle de signal ciblé ; pas un identifiant universel de réglage.

ControlResponse

fr.nimby.sdk · class
data class ControlResponse(
    val capabilities: Int, val generation: Long, val remainingMillis: Long,
    val signalCount: Int, val trainCount: Int, val settingCount: Int,
    val active: Int, val aspect: Int, val reason: Int,
    val speedMps: Double, val exitSignal: Long, val detail: String
)

Réponse du mod à une demande. Les compteurs concernent les forçages temporaires. Les champs active/aspect/reason dépendent de l’opération ; interpréter avec le contrat du mod.

ControlResponse.capabilities

fr.nimby.sdk · val
val capabilities: Int

Capacités annoncées par le mod ; ne prouve pas qu’une mutation particulière sera acceptée.

ControlResponse.generation

fr.nimby.sdk · val
val generation: Long

Génération du monde actuellement observée par le mod.

ControlResponse.remainingMillis

fr.nimby.sdk · val
val remainingMillis: Long

Durée restante du bail en millisecondes ; ne se met pas à jour dans cette copie.

ControlResponse.signalCount

fr.nimby.sdk · val
val signalCount: Int

Nombre de forçages de signaux demandés, pas nombre de signaux gérés.

ControlResponse.trainCount

fr.nimby.sdk · val
val trainCount: Int

Nombre de contraintes temporaires demandées sur les trains.

ControlResponse.settingCount

fr.nimby.sdk · val
val settingCount: Int

Nombre de cases temporairement forcées.

ControlResponse.active

fr.nimby.sdk · val
val active: Int

Pour ReadTrain : état TrainControlState. Pour ReadSignal : 0 non forcé, 1 forçage demandé, 2 décision observée conforme au forçage. Ne décrit pas une permission.

ControlResponse.aspect

fr.nimby.sdk · val
val aspect: Int

Code d’aspect de la dernière décision lue ; sa signification appartient au modèle du mod.

ControlResponse.reason

fr.nimby.sdk · val
val reason: Int

Code de raison de la dernière décision lue ; à interpréter avec le mod ciblé.

ControlResponse.speedMps

fr.nimby.sdk · val
val speedMps: Double

Plafond associé à la contrainte lue, en mètres par seconde ; pas vitesse mesurée du train.

ControlResponse.exitSignal

fr.nimby.sdk · val
val exitSignal: Long

Identité de sortie associée à la contrainte rapportée.

ControlResponse.detail

fr.nimby.sdk · val
val detail: String

Détail textuel renvoyé par le mod ; utile au journal, sans remplacer les champs structurés.

ModControlSession

fr.nimby.sdk · class
class ModControlSession : AutoCloseable

Bail temporaire obtenu avec game.mods.control. Les forçages ne réécrivent pas les réglages sauvegardés. Expiration et fermeture libèrent les surcharges ; aucun renouvellement ni essai automatique.

ModControlSession.modId

fr.nimby.sdk · val
val modId: String

Identifiant du mod effectivement ciblé par cette session.

ModControlSession.owner

fr.nimby.sdk · val
val owner: Long

Identité opaque du propriétaire du bail, fournie à l’acquisition.

ModControlSession.generation

fr.nimby.sdk · val
val generation: Long

Génération observée lors de l’acquisition ; une autre partie invalide la session.

ModControlSession.renew

fr.nimby.sdk · fun
fun renew(leaseMillis: Int = 5000): ControlResponse

Renouvelle explicitement ce bail pour 1 000 à 60 000 ms ; ne recrée pas un bail expiré silencieusement.

ModControlSession.forceSignal

fr.nimby.sdk · fun
fun forceSignal(signal: Long, aspect: Int): ControlResponse

Demande une indication temporaire sur un signal connu du mod. L’aspect doit être accepté par son modèle ; relire la décision pour constater son application.

ModControlSession.restoreSignal

fr.nimby.sdk · fun
fun restoreSignal(signal: Long): ControlResponse

Retire le forçage du signal pour laisser le modèle recalculer sa décision.

ModControlSession.setSetting

fr.nimby.sdk · fun
fun setSetting(signal: Long, index: Int, value: Boolean): ControlResponse

Force une case par son indice dans le modèle du signal, sans modifier sa valeur sauvegardée.

ModControlSession.restoreSetting

fr.nimby.sdk · fun
fun restoreSetting(signal: Long, index: Int): ControlResponse

Retire la surcharge temporaire de cette case ; le réglage sauvegardé redevient la source.

ModControlSession.constrainTrain

fr.nimby.sdk · fun
fun constrainTrain(train: Long, speedMps: Double, mode: TrainControlMode,
        exitSignal: Long = 0, releaseByRear: Boolean = false): ControlResponse

Demande une contrainte temporaire : vitesse finie en m/s, zéro pour Stop et positive sinon. Le train et toute sortie explicite doivent être connus du mod. Relire l’état ; l’acceptation ne prouve pas un mouvement.

ModControlSession.restoreTrain

fr.nimby.sdk · fun
fun restoreTrain(train: Long): ControlResponse

Retire la contrainte temporaire demandée pour ce train.

ModControlSession.readSignal

fr.nimby.sdk · fun
fun readSignal(signal: Long): ControlResponse

Lit la dernière décision évaluée du signal ; ne force aucune nouvelle évaluation et ne renouvelle pas le bail.

ModControlSession.readTrain

fr.nimby.sdk · fun
fun readTrain(train: Long): ControlResponse

Lit l’état de contrainte du train ; active correspond à TrainControlState, pas à une permission.

ModControlSession.clear

fr.nimby.sdk · fun
fun clear(): ControlResponse

Retire toutes les surcharges de cette session ; ne remplace pas close pour libérer le bail.

ModControlSession.close

fr.nimby.sdk · fun
override fun close(): Unit

Demande la libération une seule fois puis ferme la session locale, même si la libération échoue. Aucun appel ensuite ; l’expiration reste le filet de récupération des surcharges.