コード例 #1
0
 public void Register(EnhancementDatabaseReader enhancementDatabaseReader)
 {
     enhancementDatabaseReader.OnHeaderRead += (header) =>
     {
         Console.WriteLine($"Enhancement Database Version: {header.Version}");
     };
     enhancementDatabaseReader.OnEnhancementRead += (enhancement) =>
     {
         Console.WriteLine($"Enhancement: {enhancement.Name}");
     };
     enhancementDatabaseReader.OnEnhancementSetRead += (enhancementSet) =>
     {
         Console.WriteLine($"Enhancement Set: {enhancementSet.DisplayName}");
     };
 }
コード例 #2
0
 public void Register(EnhancementDatabaseReader enhancementDatabaseReader)
 {
     enhancementDatabaseReader.OnEnhancementRead += (enhancement) =>
     {
         _domainContext.Add(Map(enhancement));
         _enhancementReadCount++;
         if (_enhancementReadCount < BatchSize)
         {
             return;
         }
         _domainContext.SaveChanges();
         _enhancementReadCount = 0;
     };
     enhancementDatabaseReader.OnEnhancementsCompleted += () =>
     {
         _domainContext.SaveChanges();
     };
 }
コード例 #3
0
ファイル: Program.cs プロジェクト: patrickhuber/city-of-info
 private static void ExportEnhancementDatabase(ExportOptions options, IList <IExporter> exporters)
 {
     using (var file = File.OpenRead(options.EnhancementSetPath))
     {
         using (var binaryReader = new BinaryReader(file, Encoding.Default, true))
         {
             var enhancementDatabaseReader = new EnhancementDatabaseReader(binaryReader);
             foreach (var exporter in exporters)
             {
                 exporter.Register(enhancementDatabaseReader);
             }
             while (enhancementDatabaseReader.Read())
             {
                 ;
             }
         }
     }
 }
コード例 #4
0
        public void Register(EnhancementDatabaseReader enhancementDatabaseReader)
        {
            _enhancementDatabaseReader = enhancementDatabaseReader;

            var enhancementFolder    = Path.Combine(_outputPath, "enhancements");
            var enhancementSetFolder = Path.Combine(_outputPath, "enhancement_sets");

            var serializer = new SerializerBuilder()
                             .WithNamingConvention(UnderscoredNamingConvention.Instance)
                             .ConfigureDefaultValuesHandling(DefaultValuesHandling.OmitDefaults | DefaultValuesHandling.OmitNull)
                             .Build();

            _enhancementDatabaseReader.OnHeaderRead += (header) =>
            {
                if (!Directory.Exists(enhancementFolder))
                {
                    Directory.CreateDirectory(enhancementFolder);
                }

                if (!Directory.Exists(enhancementSetFolder))
                {
                    Directory.CreateDirectory(enhancementSetFolder);
                }
            };

            _enhancementDatabaseReader.OnEnhancementSetRead += (enhancementSet) =>
            {
                var enhancementSetPath = Path.Combine(enhancementSetFolder, enhancementSet.StringId) + ".yml";
                if (File.Exists(enhancementSetPath))
                {
                    File.Delete(enhancementSetPath);
                }
                using (var file = File.Create(enhancementSetPath))
                {
                    using (var writer = new StreamWriter(file))
                    {
                        serializer.Serialize(writer, enhancementSet);
                    }
                }
            };
            _enhancementDatabaseReader.OnEnhancementRead += (enhancement) =>
            {
                var isAttuned = enhancement.UniqueIdentifier.Contains("attuned", StringComparison.CurrentCultureIgnoreCase);
                var isCrafted = enhancement.UniqueIdentifier.Contains("crafted", StringComparison.CurrentCultureIgnoreCase);
                var isSpecial = enhancement.TypeId == EnhancementType.SpecialOrigin.Id;
                var isNormal  = !isAttuned && !isCrafted && !isSpecial;

                // TODO: Move this mapping to a data property
                var enhancementPath = enhancementFolder;
                var name            = enhancement.UniqueIdentifier;
                if (isAttuned)
                {
                    enhancementPath = Path.Combine(enhancementPath, "attuned");
                    enhancementPath = Path.Combine(enhancementPath, enhancement.EnhancementSetName);
                    name            = enhancement.EnhancementSetName + "_" + enhancement.ShortName.Replace("/", "_").Replace(" ", "_");
                }
                else if (isCrafted)
                {
                    // data/enhancements/attuned/aegis/aegis_resdam_endrdx.yml
                    // data/enhancements/attuned/aegis/aegis_psi_status.yml
                    enhancementPath = Path.Combine(enhancementPath, "crafted");
                    enhancementPath = Path.Combine(enhancementPath, enhancement.EnhancementSetName);
                    name            = enhancement.EnhancementSetName + "_" + enhancement.ShortName.Replace("/", "_").Replace(" ", "_");
                }
                else if (isSpecial)
                {
                    enhancementPath = Path.Combine(enhancementPath, "special");
                }
                else if (isNormal)
                {
                    // data/enhancements/normal/defense.yml
                    // data/enhancements/normal/flight_speed.yml
                    enhancementPath = Path.Combine(enhancementPath, "normal");
                    name            = enhancement.Name.Replace(" ", "_");
                }

                if (!Directory.Exists(enhancementPath))
                {
                    Directory.CreateDirectory(enhancementPath);
                }

                var fileName = name + ".yml";
                enhancementPath = Path.Combine(enhancementPath, fileName);

                if (File.Exists(enhancementPath))
                {
                    File.Delete(enhancementPath);
                }

                using (var file = File.Create(enhancementPath))
                {
                    using (var writer = new StreamWriter(file))
                    {
                        serializer.Serialize(writer, enhancement);
                    }
                }
            };
        }
コード例 #5
0
 public MidsDomainContextLoader(DatabaseReader databaseReader, EnhancementDatabaseReader enhancementDatabaseReader)
 {
     _databaseReader            = databaseReader;
     _enhancementDatabaseReader = enhancementDatabaseReader;
 }
コード例 #6
0
 /// <summary>
 /// Creates an instance of the context provider from the given readers
 /// </summary>
 /// <remarks>may want to encapsulate this usage because reader is stateful and Create modifies that state.</remarks>
 /// <param name="databaseReader">the database reader to use.</param>
 public MidsDomainContextFactory(DatabaseReader databaseReader, EnhancementDatabaseReader enhancementDatabaseReader)
 {
     _loader = new MidsDomainContextLoader(databaseReader, enhancementDatabaseReader);
 }
コード例 #7
0
 public void Register(EnhancementDatabaseReader enhancementDatabaseReader)
 {
     _contextMapper.Register(enhancementDatabaseReader);
 }