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 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.
§Panics
Panics only if the internal Mutex is poisoned, which cannot happen in normal use.
Sourcepub fn start(&mut self, node: &str) -> Result<()>
pub fn start(&mut self, node: &str) -> Result<()>
Starts execution at the given node.
§Errors
Returns DialogueError::UnknownNode if the title does not exist in the program.
§Panics
Panics only if the internal Mutex is poisoned, which cannot happen in normal use.
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::Runtime if called when not awaiting an option or 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 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.