Example #1
0
        public ScreenInputProcessResult ProcessInput(ConsoleKey key, Action endDialogueCallback)
        {
            var result = new ScreenInputProcessResult();

            switch (key)
            {
            case ConsoleKey.Q:
                if (CurrentDialogue == null)
                {
                    result.SwitchState  = GameState.World;
                    result.RerenderFlag = true;
                }

                break;

            case ConsoleKey.UpArrow:
                TalkToList.PrevItem();
                result.RerenderFlag = true;
                break;

            case ConsoleKey.DownArrow:
                TalkToList.NextItem();
                result.RerenderFlag = true;
                break;

            case ConsoleKey.Enter:
                TalkToList.PressCurrentItem();

                if (CurrentDialogue != null)
                {
                    TalkToList = new UiSelectList(
                        CurrentDialogue.Choices.Select((c, i) => new UiLabel
                    {
                        Row     = i,
                        Text    = $"  {c.Text}",
                        OnPress = (_, __) =>
                        {
                            CurrentDialogue = c.NextDialogue;
                            if (CurrentDialogue == null)
                            {
                                endDialogueCallback();
                            }
                        }
                    }).ToList()
                        );
                }
                result.RerenderFlag = true;
                break;
            }

            return(result);
        }
Example #2
0
        public void Render()
        {
            if (CurrentDialogue == null)
            {
                Console.WriteLine("Talk to... (Q) to abort");
            }
            else
            {
                Console.WriteLine();
                Console.WriteLine($"  {string.Join("\n  ", CurrentDialogue.Text.Split(Configuration.BufferLength - 2))}");
                Console.WriteLine();
            }

            TalkToList.Render();
        }