private void ProcessLine(string line)
        {
            if(line.StartsWith('$'))
            {
                var match = Regex.Match(line, @"(?<=\$jmp\s)\d+", RegexOptions.IgnoreCase);
                if (match.Success)
                {
                    //Console.Write($"Jump to {match.Value}");
                    _linePointer = int.Parse(match.Value) - 1;
                    return;
                }

                if(line.StartsWith("$choice"))
                {
                    var matches = Regex.Matches(line, @"(?<=\$choice|\|)[^\|]+:\s*[1-9]+", RegexOptions.IgnoreCase);
                    if (matches.Count > 0)
                    {
                        ParseChoice(matches);
                        return;
                    }
                }
            }
            DelayedWriter.WriteLineDelay(line);
            Console.ReadKey(true);
            Console.Write("\n");
            _linePointer++;
        }
 private void ParseChoice(MatchCollection matches)
 {
     var count = matches.Count;
     var choices = new Choice[count];
     for (int i = 0; i < count; i++)
     {
         choices[i] = new Choice(matches[i].Value);
         DelayedWriter.WriteLineDelay($"{i} - {choices[i].text}\n");
     }
     _linePointer = choices[GetChoice(count)].targetLine - 1;
 }
 private int GetChoice(int count)
 {
     //DelayedWriter.WriteLineDelay("Enter choice.\n");
     int choice;
     while(true)
     {
         if(int.TryParse(Console.ReadLine(), out choice))
         {
             if(choice < count)
             {
                 break;
             }
         }
         DelayedWriter.WriteLineDelay("Enter a valid choice\n");
     }
     return choice;
 }