private void SetupSaveKeyInput()
        {
            this.FocusManager.GlobalKeyHandlers.PushForLifetime(ConsoleKey.S, null, () =>
            {
                Dialog.ShowRichTextInput("Name this level".ToYellow(), (result) =>
                {
                    CurrentLevelDefinition.Save(result.ToString());
                }, initialValue: LevelId?.ToConsoleString());
            }, LifetimeManager);

            this.FocusManager.GlobalKeyHandlers.PushForLifetime(ConsoleKey.L, null, () =>
            {
                var options = LevelDefinition.GetLevelDefinitionFiles().Select(f => new DialogOption()
                {
                    DisplayText = System.IO.Path.GetFileNameWithoutExtension(f).ToYellow(), Id = f
                });

                if (options.Count() == 0)
                {
                    Dialog.ShowMessage("No levels to load");
                }
                else
                {
                    Dialog.Pick("Choose a level to load".ToYellow(), options).Then((button) =>
                    {
                        var levelFile = button.Id;
                        LoadLevel(levelFile);
                    });
                }
            }, LifetimeManager);
        }
 public LevelCompletionType() : base()
 {
     innerSource = new SimpleTabCompletionSource(LevelDefinition.GetLevelDefinitionFiles().Select(l => System.IO.Path.GetFileNameWithoutExtension(l).Contains(" ") ? "\"" + System.IO.Path.GetFileNameWithoutExtension(l) + "\"" : System.IO.Path.GetFileNameWithoutExtension(l)));
 }