Crate bladeink

Crate bladeink 

Source
Expand description

This is a Rust port of inkle’s Ink, a scripting language for writing interactive narratives. bladeink is fully compatible with the reference version and supports all its language features.

To learn more about the Ink language, you can check the official documentation.

Here is a quick example that uses basic features to play an Ink story using the bladeink crate.

// story is the entry point of the `bladeink` lib.
// json_string is a string with all the contents of the .ink.json file.
let mut story = Story::new(json_string)?;

loop {
    while story.can_continue() {
        let line = story.cont()?;

        println!("{}", line);
    }

    let choices = story.get_current_choices();
    if !choices.is_empty() {
        // read_input is a method that you should implement
        // to get the choice selected by the user.
        let choice_idx:usize = read_input(&choices);
        // set the option selected by the user
        story.choose_choice_index(choice_idx)?;
    } else {
        break;
    }
}

The bladeink library supports all the Ink language features, including threads, multi-flows, variable set/get from code, variable observing, external functions, tags on choices, etc. Examples of uses of all these features will be added to this documentation in the future, but meanwhile, all the examples can be found in the lib/tests folder in the source code of this crate.

Modules§

choice
A generated Choice from the story.
story
Story is the entry point to load and run an Ink story.
story_error
Errors that happen at runtime, when running a Story.
value_type
A combination of an Ink value with its type.