diff --git a/src/engine/JsonSerialisation.ts b/src/engine/JsonSerialisation.ts index 14eb462a..682530af 100644 --- a/src/engine/JsonSerialisation.ts +++ b/src/engine/JsonSerialisation.ts @@ -587,6 +587,7 @@ export class JsonSerialisation { choice.originalThreadIndex = parseInt(jObj["originalThreadIndex"]); choice.pathStringOnChoice = jObj["targetPath"].toString(); choice.tags = this.JArrayToTags(jObj); + choice.isInvisibleDefault = !!jObj["isInvisibleDefault"]; return choice; } @@ -605,6 +606,7 @@ export class JsonSerialisation { writer.WriteProperty("originalChoicePath", choice.sourcePath); writer.WriteIntProperty("originalThreadIndex", choice.originalThreadIndex); writer.WriteProperty("targetPath", choice.pathStringOnChoice); + writer.WriteProperty("isInvisibleDefault", choice.isInvisibleDefault); this.WriteChoiceTags(writer, choice); writer.WriteObjectEnd(); } diff --git a/src/tests/specs/ink/Choices.spec.ts b/src/tests/specs/ink/Choices.spec.ts index 859b59e0..c2c113b5 100644 --- a/src/tests/specs/ink/Choices.spec.ts +++ b/src/tests/specs/ink/Choices.spec.ts @@ -299,4 +299,21 @@ describe("Choices", () => { "I did have one interesting fact about bricklaying, if you don't mind me spending taking a fair bit of time to lay the groundwork for it." ); }); + + // TestFallbackChoicesHiddenAfterLoad + it("tests fallback choices remain hidden after load", () => { + compileStory("default_choices"); + context.story.Continue(); + + expect(context.story.currentChoices.length).toBe(2); + expect(context.story.currentChoices[0].text).toBe("Choice 1"); + expect(context.story.currentChoices[1].text).toBe("Choice 2"); + + const savedState = context.story.state.ToJson(); + context.story.state.LoadJson(savedState); + + expect(context.story.currentChoices.length).toBe(2); + expect(context.story.currentChoices[0].text).toBe("Choice 1"); + expect(context.story.currentChoices[1].text).toBe("Choice 2"); + }); });