private static void BeginStory() { if (loadedStory == null) { Console.WriteLine("No story loaded."); WaitForEnter(); return; } int usedRootChapterCount = loadedStory.GetUsedRootChapterCount(); if (usedRootChapterCount == 0) { Console.WriteLine("No root chapters founds found."); WaitForEnter(); return; } else if (usedRootChapterCount > 1) { Console.WriteLine("Choose a beginning:"); Dictionary <string, ushort> validChoiceMap = new Dictionary <string, ushort>(); for (int i = 0; i < loadedStory.RootChapters.Count; i++) { if (loadedStory.RootChapters[i] != 0xFFFF) { Console.WriteLine(i + ") " + loadedStory.Chapters[loadedStory.RootChapters[i]].Title); validChoiceMap.Add(i.ToString(), loadedStory.RootChapters[i]); } } bool inputValid = false; while (!inputValid) { Console.Write("Enter choice: "); string choice = Console.ReadLine(); if (validChoiceMap.ContainsKey(choice)) { inputValid = true; ExploreStory(validChoiceMap[choice]); } else { Console.WriteLine("Invalid input"); } } } else { foreach (ushort rc in loadedStory.RootChapters) { if (rc != 0xFFFF) { ExploreStory(rc); return; } } } }