示例#1
0
        public override Task <List <Feat> > FindBlocks(List <string> lines)
        {
            var feats = new List <Feat>();

            lines = lines.CleanListOfStrings().ToList();

            var featsStart    = lines.FindIndex(f => f.StartsWith("## Feats"));
            var featsEndIndex = lines.FindIndex(featsStart + 1, f => f.StartsWith("## ") && !f.Contains("feat", StringComparison.InvariantCultureIgnoreCase));

            for (var i = 0; i < (featsEndIndex != -1 ? featsEndIndex : lines.Count); i++)
            {
                if (!lines[i].StartsWith("### "))
                {
                    continue;
                }

                var featStartIndex = i;
                var featEndIndex   = lines.FindIndex(i + 1, f => f.StartsWith("##"));

                var featLines = lines.Skip(featStartIndex);
                if (featEndIndex != -1)
                {
                    featLines = lines.Skip(featStartIndex).Take(featEndIndex - featStartIndex);
                }

                var playerHandbookFeatProcessor = new PlayerHandbookFeatProcessor(Localization);
                var feat = playerHandbookFeatProcessor.ParseFeat(featLines.ToList(), ContentType.ExpandedContent);
                feats.Add(feat);
            }

            return(Task.FromResult(feats));
        }