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); }
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); } }
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]; }