private List <Item> ExtractItems(string path)
        {
            int idIndex        = -1;
            int nameIndex      = -1;
            int qualityIndex   = -1;
            int sellPriceIndex = -1;

            var extractor = new CSVExtractor();

            extractor.HeaderAction = () =>
            {
                idIndex        = extractor.FindIndex("ID");
                nameIndex      = extractor.FindIndex("Display_lang");
                qualityIndex   = extractor.FindIndex("OverallQualityID");
                sellPriceIndex = extractor.FindIndex("SellPrice");
            };

            var             items       = new List <Item>();
            Action <string> extractLine = line =>
            {
                string[] values = line.Split(",");
                if (line.Contains("\""))
                {
                    values = extractor.SplitQuotes(line);
                }
                else
                {
                    values = line.Split(",");
                }

                if (values.Length > idIndex &&
                    values.Length > nameIndex &&
                    values.Length > qualityIndex &&
                    values.Length > sellPriceIndex)
                {
                    items.Add(new Item
                    {
                        Entry     = int.Parse(values[idIndex]),
                        Quality   = int.Parse(values[qualityIndex]),
                        Name      = values[nameIndex],
                        SellPrice = int.Parse(values[sellPriceIndex])
                    });
                }
            };

            extractor.ExtractTemplate(path, extractLine);
            return(items);
        }
        private void ExtractContinent(string path, List <WorldMapArea> wmas)
        {
            int mapIdIndex     = -1;
            int directoryIndex = -1;

            var extractor = new CSVExtractor();

            extractor.HeaderAction = () =>
            {
                mapIdIndex     = extractor.FindIndex("ID");
                directoryIndex = extractor.FindIndex("Directory");
            };

            Action <string> extractLine = line =>
            {
                string[] values;
                if (line.Contains("\""))
                {
                    values = extractor.SplitQuotes(line);
                }
                else
                {
                    values = line.Split(",");
                }

                if (values.Length > directoryIndex &&
                    values.Length > mapIdIndex)
                {
                    int mapId = int.Parse(values[mapIdIndex]);

                    var list = wmas.FindAll(x => x.MapID == mapId);
                    foreach (var item in list)
                    {
                        item.Continent = values[directoryIndex];
                    }
                }
            };

            extractor.ExtractTemplate(path, extractLine);
        }