Skip to main content

ScriptEngine

Struct ScriptEngine 

Source
pub struct ScriptEngine { /* private fields */ }

Implementations§

Source§

impl ScriptEngine

Source

pub fn new() -> Self

Source

pub fn state(&self) -> &EngineState

Source

pub fn is_idle(&self) -> bool

Source

pub fn is_waiting(&self) -> bool

Source

pub fn set_flag(&mut self, flag: &str, value: bool)

Source

pub fn get_flag(&self, flag: &str) -> bool

Source

pub fn get_all_flags(&self) -> HashMap<String, bool>

Return a snapshot of all flags currently held in the bridge. Used by the overworld to persist flags across map transitions.

Source

pub fn seed_flags(&mut self, flags: &HashMap<String, bool>)

Bulk-insert flags into the bridge (additive — does not clear existing). Called after creating a new ScriptEngine to restore persistent flags.

Source

pub fn seed_rng(&mut self, seed: u64)

Pin the script-side RNG to a deterministic starting state. Intended for tests; a value of 0 is treated as the default non-zero seed.

Source

pub fn mix_rng(&mut self, entropy: u64)

Mix externally-sourced entropy into the script-side RNG. The game layer calls this (e.g. once per frame with a draw from the overworld RNG) so game.showRandomText(...) picks vary between playthroughs even though scripts themselves have no access to Math.random/Date.now.

Source

pub fn seed_number(&mut self, k: &str, v: f64)

Seed a numeric value read by synchronous query functions.

Source

pub fn seed_text(&mut self, k: &str, v: &str)

Seed a text value read by synchronous query functions.

Source

pub fn seed_set(&mut self, k: &str, vals: &[String])

Seed a string set read by synchronous query functions (e.g. the player’s bag, as a set of item constant names).

Source

pub fn set_player_position(&mut self, x: u8, y: u8)

Source

pub fn set_lang(&mut self, lang: &str)

Source

pub fn load_script(&mut self, source: &str) -> Result<(), ScriptEngineError>

Source

pub fn load_shared_module( &mut self, name: &str, source: &str, ) -> Result<(), ScriptEngineError>

Source

pub fn call_function( &mut self, fn_name: &str, args: &[JsValue], ) -> Result<Option<ScriptCommand>, ScriptEngineError>

Call a JS async function by name (e.g., “scriptDefault”, “talkProf”). The function must be export-ed from the loaded module. Returns the first ScriptCommand if the function immediately awaits one.

Source

pub fn tick(&mut self) -> Option<ScriptCommand>

Called each frame by the game loop. Returns the current pending command if the script is waiting.

Source

pub fn signal_done( &mut self, result: CommandResult, ) -> Result<Option<ScriptCommand>, ScriptEngineError>

Signal that the game has completed the pending command. Resolves the JS promise so the async function can continue.

Source

pub fn register_async_fn( &mut self, name: &str, builder: impl Fn(&[JsValue], &mut Context) -> JsResult<ScriptCommand> + 'static, )

Register an async command function on the game global JS object.

The builder closure receives JS arguments and returns a ScriptCommand. The engine automatically creates a Promise, stores the command + resolve function in the bridge, and returns the Promise to JS.

This is the building block for ScriptApiRegistrar implementations.

Source

pub fn register_sync_fn<F>(&mut self, name: &str, f: F)
where F: Fn(&[JsValue], &mut Context, &BridgeView<'_>) -> JsResult<JsValue> + 'static,

Register a synchronous query function on the game global JS object.

Unlike register_async_fn, the closure returns a JsValue directly (no promise, no pending command). It is handed a read-only BridgeView over the seeded query state so it can answer @if-style conditions immediately.

Source

pub fn with_api(registrar: &dyn ScriptApiRegistrar) -> Self

Construct a ScriptEngine with a game-specific API registrar.

Core APIs (showText, moveNpc, getFlag, warpTo, playMusic, etc.) are always registered. The registrar adds game-specific APIs such as giveMonster, startBattle, etc.

Source§

impl ScriptEngine

Source

pub fn call_function_no_args( &mut self, fn_name: &str, ) -> Result<Option<ScriptCommand>, ScriptEngineError>

Call a JS function with no arguments.

Source

pub fn call_function_with_u8( &mut self, fn_name: &str, arg: u8, ) -> Result<Option<ScriptCommand>, ScriptEngineError>

Call a JS function with a single u8 argument (e.g., npc text_id lookup).

Source

pub fn call_function_with_xy( &mut self, fn_name: &str, x: u16, y: u16, ) -> Result<Option<ScriptCommand>, ScriptEngineError>

Call a JS function with two u16 arguments (e.g., coord event trigger).

Source

pub fn call_function_with_str( &mut self, fn_name: &str, arg: &str, ) -> Result<Option<ScriptCommand>, ScriptEngineError>

Call a JS function with a single string argument.

Source

pub fn has_function(&mut self, fn_name: &str) -> bool

Check if a JS function exists in the module’s exports (matching the storyline_ resolution used by Self::call_function).

Trait Implementations§

Source§

impl Default for ScriptEngine

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
where ST: ?Sized, DT: ?Sized,

Source§

impl<T> Conv for T

Source§

fn conv<T>(self) -> T
where Self: Into<T>,

Converts self into T using Into<T>. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,

Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

fn into_either(self, into_left: bool) -> Either<Self, Self>

Converts self into a Left variant of Either<Self, Self> if into_left is true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

Converts self into a Left variant of Either<Self, Self> if into_left(&self) returns true. Converts self into a Right variant of Either<Self, Self> otherwise. Read more
Source§

impl<T> MaybeSendSync for T

Source§

impl<T> Pipe for T
where T: ?Sized,

Source§

fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> R
where Self: Sized,

Pipes by value. This is generally the method you want to use. Read more
Source§

fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> R
where R: 'a,

Borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> R
where R: 'a,

Mutably borrows self and passes that borrow into the pipe function. Read more
Source§

fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
where Self: Borrow<B>, B: 'a + ?Sized, R: 'a,

Borrows self, then passes self.borrow() into the pipe function. Read more
Source§

fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
where Self: BorrowMut<B>, B: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.borrow_mut() into the pipe function. Read more
Source§

fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
where Self: AsRef<U>, U: 'a + ?Sized, R: 'a,

Borrows self, then passes self.as_ref() into the pipe function.
Source§

fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
where Self: AsMut<U>, U: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.as_mut() into the pipe function.
Source§

fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
where Self: Deref<Target = T>, T: 'a + ?Sized, R: 'a,

Borrows self, then passes self.deref() into the pipe function.
Source§

fn pipe_deref_mut<'a, T, R>( &'a mut self, func: impl FnOnce(&'a mut T) -> R, ) -> R
where Self: DerefMut<Target = T> + Deref, T: 'a + ?Sized, R: 'a,

Mutably borrows self, then passes self.deref_mut() into the pipe function.
Source§

impl<T> Read<Exclusive, BecauseExclusive> for T
where T: ?Sized,

Source§

impl<T> Tap for T

Source§

fn tap(self, func: impl FnOnce(&Self)) -> Self

Immutable access to a value. Read more
Source§

fn tap_mut(self, func: impl FnOnce(&mut Self)) -> Self

Mutable access to a value. Read more
Source§

fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Immutable access to the Borrow<B> of a value. Read more
Source§

fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Mutable access to the BorrowMut<B> of a value. Read more
Source§

fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Immutable access to the AsRef<R> view of a value. Read more
Source§

fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Mutable access to the AsMut<R> view of a value. Read more
Source§

fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Immutable access to the Deref::Target of a value. Read more
Source§

fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Mutable access to the Deref::Target of a value. Read more
Source§

fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self

Calls .tap() only in debug builds, and is erased in release builds.
Source§

fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self

Calls .tap_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
where Self: Borrow<B>, B: ?Sized,

Calls .tap_borrow() only in debug builds, and is erased in release builds.
Source§

fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
where Self: BorrowMut<B>, B: ?Sized,

Calls .tap_borrow_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
where Self: AsRef<R>, R: ?Sized,

Calls .tap_ref() only in debug builds, and is erased in release builds.
Source§

fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
where Self: AsMut<R>, R: ?Sized,

Calls .tap_ref_mut() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
where Self: Deref<Target = T>, T: ?Sized,

Calls .tap_deref() only in debug builds, and is erased in release builds.
Source§

fn tap_deref_mut_dbg<T>(self, func: impl FnOnce(&mut T)) -> Self
where Self: DerefMut<Target = T> + Deref, T: ?Sized,

Calls .tap_deref_mut() only in debug builds, and is erased in release builds.
Source§

impl<T> TryConv for T

Source§

fn try_conv<T>(self) -> Result<T, Self::Error>
where Self: TryInto<T>,

Attempts to convert self into T using TryInto<T>. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V