NRF Guide

Référence

ToolContext

Lire le réseau, préparer une pose, publier des boutons et écrire dans le journal depuis un outil.

Contexte d’utilisation

ModulePackageSource SDK
Kotlin/Nativenimbykotlin/src/nimby/ToolContext.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.

Contexte, unités et opérations

Le contexte est prêt à utiliser dans service et onTick. Il appartient au callback courant : conservez les valeurs copiées et les tickets, jamais ce contexte. Le SDK refuse les appels après le retour du callback.

ValeurContrat
ToolTrack.lengthMMètres, optionnel ; null impose d’arrêter le parcours.
SignalPosition.fractionFraction native strictement entre 0 et 1 pour une pose.
SignalPosition.directionSens natif -1 ou 1 ; distinct du sens visuel de certains modèles.
ConstructionResult.reasonCode de refus du pont natif ; à conserver dans le journal.
ToolButtonIdentifiant, libellé, état activé ; au maximum 12 boutons par panneau.
showPanelMessage UTF-8 limité à 256 octets ; remplace l’action qui a ouvert l’outil.

ToolTrack

nimby · class
data class ToolTrack(val id: Long, val linkA: Long?, val linkB: Long?, val lengthM: Double?)

Géométrie observée pour un outil. Une longueur absente interrompt le parcours.

ToolJunction

nimby · class
data class ToolJunction(val branchTrack: Long, val mainTrack: Long, val fraction: Double, val mainDirection: Int, val branchDirection: Int)

ToolSignal

nimby · class
data class ToolSignal(val id: Long, val track: Long, val fraction: Double, val direction: Int, val kind: Int)

ToolNetwork

nimby · class
data class ToolNetwork(val worldId: String, val generation: Long, val tracks: List<ToolTrack>, val junctions: List<ToolJunction>, val signals: List<ToolSignal>)

SignalPosition

nimby · class
data class SignalPosition(val trackId: Long, val fraction: Double, val direction: Int)

ConstructionState

nimby · class
enum class ConstructionState {
Ready, Applied, Undone, Rejected, Partial, Pending
}

ConstructionResult

nimby · class
data class ConstructionResult(val state: ConstructionState, val token: Long, val createdIds: List<Long>, val reason: Int, val canUndo: Boolean)

ToolButton

nimby · class
data class ToolButton(val id: String, val label: String, val enabled: Boolean = true)

Contrôles temporaires de l'outil dans le panneau du signal sélectionné. Leur retrait ne modifie pas les cases persistantes du mod de signalisation.

LogLevel

nimby · class
enum class LogLevel {
Info, Warning, Error
}

ToolContext

nimby · class
class ToolContext

Accès valable uniquement pendant un callback de l'outil, sur son worker. Garder les données copiées est permis ; conserver le contexte ne l'est pas. La construction est expérimentale et exige le pont Windows correspondant. Construction réservée au SDK : utilisez la fonction de création ou le contexte fourni.

ToolContext.worldId

nimby · val
val worldId: String

ToolContext.generation

nimby · val
val generation: Long

ToolContext.log

nimby · fun
fun log(message: String, level: LogLevel = LogLevel.Info)

Journal persistant commun aux mods ; ne pas y écrire de secrets.

ToolContext.network

nimby · fun
fun network(): ToolNetwork

Nouvelle capture après prepareConstruction, jamais une topologie cachée.

ToolContext.prepareConstruction

nimby · fun
fun prepareConstruction(sourceSignal: Long): ConstructionResult

ToolContext.createSignals

nimby · fun
fun createSignals(ticket: Long, sourceSignal: Long, positions: List<SignalPosition>): ConstructionResult

En cas de Pending, appeler pollConstruction avec le même ticket. Ne pas refaire createSignals : une réponse incertaine peut masquer une pose réelle.

ToolContext.undoConstruction

nimby · fun
fun undoConstruction(ticket: Long): ConstructionResult

ToolContext.pollConstruction

nimby · fun
fun pollConstruction(ticket: Long): ConstructionResult

ToolContext.showPanel

nimby · fun
fun showPanel(request: SignalActionRequest, message: String, buttons: List<ToolButton>)

Remplace seulement l'action à l'origine de [request] par ces contrôles. Les clics suivants arrivent au même service avec l'id du bouton dans action.