Skip to content

Instantly share code, notes, and snippets.

@mstevenson
Created January 11, 2018 22:44
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save mstevenson/52334cbda4baf0db242345c018621905 to your computer and use it in GitHub Desktop.
Save mstevenson/52334cbda4baf0db242345c018621905 to your computer and use it in GitHub Desktop.
An idea for how to save and restore the state of an InklewriterSharp game.
// Load story file
string storyJson = File.ReadAllText ("Stories/musgraveritual.json");
StoryModel model = StoryModel.Create (storyJson);
// Find the saved stitch and fast forward the story's initial stitch:
string restoredStitchName = "holmesResumedHis"; // load this from disk
foreach (var stitch in model.Story.Stitches) {
if (stitch.Name == restoredStitchName) {
// Fast forward the story to this stitch
model.Story.InitialStitch = stitch;
break;
}
}
// Load story into player
StoryPlayer player = new StoryPlayer (model, new Inklewriter.MarkupConverters.ConsoleMarkupConverter ());
// Collect all saved flag strings
List<string> restoredFlagStrings = new List<string> { "a:1", "b:2", "c:3" }; // load this from disk
List<FlagValue> flags = new List<FlagValue>();
foreach (var flag in restoredFlagStrings)
{
// TODO Convert flag strings into FlagValue objects. There's not a clean API for this,
// but some code from StoryModel.ProcessFlagSettings could be recycled.
}
// Create our first Chunk using the InitialStitch that we previously set,
// and restore all of its saved flags.
player.CreateFirstChunkWithFlags(flags);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment