Ejemplo n.º 1
0
        private async IAsyncEnumerable <Commodity> LoadAndWriteJsonFiles(string itemsFolder)
        {
            var folderPath = Path.Combine(DataRoot, itemsFolder);
            var index      = new List <Item>();

            foreach (var entityFilename in Directory.EnumerateFiles(folderPath, "*.xml", SearchOption.AllDirectories))
            {
                if (AvoidFile(entityFilename))
                {
                    continue;
                }

                EntityClassDefinition entity = null;

                // Entity
                _logger.LogInformation(entityFilename);
                entity = await _entityParser.Parse(entityFilename, OnXmlLoadout);

                if (entity == null)
                {
                    continue;
                }

                var jsonFilename = Path.Combine(OutputFolder, $"{entity.ClassName.ToLower()}.json");
                _ = _jsonFileReaderWriter.WriteFile(jsonFilename, () => new { Raw = new { Entity = entity } });

                var etd = GetLocalizedDataFromEntity(entity);

                var type        = CommodityTypes[etd.Type];
                var subType     = CommodityTypes.GetValueOrDefault(etd.SubType);
                var description = string.IsNullOrWhiteSpace(etd.Description) ? subType?.Description : etd.Description;

                yield return(new Commodity
                {
                    Id = new Guid(entity.Id),
                    JsonFilename =
                        Path.GetRelativePath(Path.GetDirectoryName(OutputFolder), jsonFilename),
                    ClassName = entity.ClassName,
                    Type = type,
                    TypeId = type.Id,
                    SubType = subType,
                    SubTypeId = subType?.Id,
                    Name = etd.Name,
                    Description = description
                });
            }
        }