pub struct Runner<S: VariableStorage> { /* private fields */ }Expand description
Drives execution of a compiled Program, yielding DialogueEvents one at a time.
§Pull model
The host calls Runner::next_event in a loop until it returns Ok(None) (dialogue
ended) or until it receives a DialogueEvent::Options, at which point it must call
Runner::select_option before continuing.
Implementations§
Source§impl<S: VariableStorage> Runner<S>
impl<S: VariableStorage> Runner<S>
Sourcepub const fn program(&self) -> &Program
pub const fn program(&self) -> &Program
Returns read-only access to the compiled program (node titles, declarations, etc.).
Sourcepub const fn phase(&self) -> RunnerPhase
pub const fn phase(&self) -> RunnerPhase
Returns the runner’s current phase for UI or protocol guards.
Sourcepub fn new(program: Program, storage: S) -> Self
pub fn new(program: Program, storage: S) -> Self
Creates a new runner for the given program and variable storage.
Sourcepub fn start(&mut self, node: &str) -> Result<()>
pub fn start(&mut self, node: &str) -> Result<()>
Starts execution at the given node.
Clears any queued events and abandons an in-flight choice so a new conversation
cannot inherit stale DialogueEvent::DialogueComplete or option state from a
prior Runner::start.
§Errors
Returns DialogueError::UnknownNode if the title does not exist in the program.
Sourcepub fn next_event(&mut self) -> Result<Option<DialogueEvent>>
pub fn next_event(&mut self) -> Result<Option<DialogueEvent>>
Returns the next event, or Ok(None) when dialogue is finished.
§Errors
Returns a DialogueError on runtime failures.
Sourcepub fn select_option(&mut self, index: usize) -> Result<()>
pub fn select_option(&mut self, index: usize) -> Result<()>
Selects an option by index after receiving DialogueEvent::Options.
§Errors
Returns DialogueError::ProtocolViolation if called when not awaiting an option
selection, or if index is out of range.
Sourcepub const fn storage_mut(&mut self) -> &mut S
pub const fn storage_mut(&mut self) -> &mut S
Returns a mutable reference to the variable storage.
Sourcepub fn all_variables(&self) -> Vec<(String, Value)>
pub fn all_variables(&self) -> Vec<(String, Value)>
Returns all variables known to storage (see VariableStorage::all_variables).
For HashMapStorage this is every key/value pair.
Custom stores return whatever their VariableStorage::all_variables
implementation provides (often empty unless overridden).
Sourcepub fn variable(&self, name: &str) -> Option<Value>
pub fn variable(&self, name: &str) -> Option<Value>
Returns a clone of the value for name, or None if unset.
Sourcepub fn variable_ref(&self, name: &str) -> Option<Cow<'_, Value>>
pub fn variable_ref(&self, name: &str) -> Option<Cow<'_, Value>>
Borrows the value for name when the storage can lend it without cloning.
Sourcepub const fn library_mut(&mut self) -> &mut FunctionLibrary
pub const fn library_mut(&mut self) -> &mut FunctionLibrary
Returns a mutable reference to the function library (for registering host functions).
Sourcepub fn set_saliency(&mut self, strategy: impl SaliencyStrategy)
pub fn set_saliency(&mut self, strategy: impl SaliencyStrategy)
Replaces the saliency strategy used for line and node group selection.
Sourcepub fn set_provider(&mut self, provider: impl LineProvider)
pub fn set_provider(&mut self, provider: impl LineProvider)
Sets the line provider used for localisation lookup.
Sourcepub fn snapshot(&self) -> RunnerSnapshot
pub fn snapshot(&self) -> RunnerSnapshot
Captures the current session state into a RunnerSnapshot.
The snapshot records the active node title, visit counts, and the set of
exhausted <<once>> blocks. Variable storage is not included; persist
it via Runner::storage alongside the snapshot when saving.
Restoring with Runner::restore will restart execution from the beginning
of the snapshotted node.
Enable the serde feature on bubbles-dialogue if you need Serialize /
Deserialize on RunnerSnapshot.
Sourcepub fn restore(&mut self, snapshot: RunnerSnapshot) -> Result<()>
pub fn restore(&mut self, snapshot: RunnerSnapshot) -> Result<()>
Applies a previously captured RunnerSnapshot, restoring visit counts
and the <<once>> exhaustion set, then re-enters the snapshotted node
from its beginning.
§Errors
Returns DialogueError::UnknownNode if the snapshotted node no longer
exists in the program (e.g. after a script update).