Ejemplo n.º 1
0
        private EcfFile ReadEcf(string filename, Action <EcfBlock> mapId)
        {
            var result = new EcfFile();

            try
            {
                var fullFilename = GetConfigurationFile(filename);
                Log($"EmpyrionScripting {fullFilename}: start", LogLevel.Message);
                result = Parse.Deserialize(File.ReadAllLines(fullFilename));
                result.Blocks.ForEach(mapId);
                if (BlockIdMapping != null)
                {
                    Parse.ReplaceWithMappedIds(result, BlockIdMapping);
                }
                Log($"EmpyrionScripting {fullFilename}: #{result.Blocks.Count}", LogLevel.Message);
            }
            catch (Exception error) { Log($"EmpyrionScripting {filename}: {error}", LogLevel.Error); }

            return(result);
        }
Ejemplo n.º 2
0
        public void FlatEcfConfigData()
        {
            Flat_Config_Ecf = new EcfFile()
            {
                Blocks = new List <EcfBlock>()
            };
            try { Configuration_Ecf.Blocks?.ForEach(B => Flat_Config_Ecf.Blocks.Add(MergeRefBlocks(new EcfBlock(), B))); }
            catch (Exception error) { Log($"EmpyrionScripting Configuration_Ecf.Blocks MergeRefBlocks: {error}", LogLevel.Error); }

            try { FlatConfigBlockById = BlocksById(Flat_Config_Ecf.Blocks); }
            catch (Exception error) { Log($"EmpyrionScripting FlatConfigBlockById: {error}", LogLevel.Error); }

            try { FlatConfigBlockByName = BlocksByName(Flat_Config_Ecf.Blocks); }
            catch (Exception error) { Log($"EmpyrionScripting FlatConfigBlockByName: {error}", LogLevel.Error); }

            try { FlatConfigTemplatesByName = TemplatesByName(Flat_Config_Ecf.Blocks); }
            catch (Exception error) { Log($"EmpyrionScripting FlatConfigBlockByName: {error}", LogLevel.Error); }

            try{ GenerateParentBlockList(); }
            catch (Exception error) { Log($"EmpyrionScripting FlatConfigBlockByName: {error}", LogLevel.Error); }
        }
Ejemplo n.º 3
0
        public void TestReadAllEcfFiles()
        {
            var configDir = @"C:\SteamGames\steamapps\common\Empyrion - Galactic Survival\Content\Configuration";

            if (!Directory.Exists(configDir))
            {
                return;
            }

            EcfFile mergeAll = null;

            Directory.GetFiles(configDir, "*.ecf")
            .ToList()
            .ForEach(F =>
            {
                try
                {
                    var ecf = EcfParser.Parse.Deserialize(File.ReadAllLines(F));
                    if (mergeAll == null)
                    {
                        mergeAll = ecf;
                    }
                    else
                    {
                        mergeAll.MergeWith(ecf);
                    }
                }
                catch (Exception error)
                {
                    throw new Exception(F, error);
                }
            });

            var blockById = mergeAll.Blocks.
                            EcfBlocksToDictionary(
                B => (B.Name == "Block" || B.Name == "Item") && B.Attr.Any(A => A.Name == "Id"),
                B => B.Attr.FirstOrDefault(a => a.Name == "Id")?.Value);

            var b = blockById[1367];
        }