private static void DecompileFile(FileInfo file) { string fileName = string.Format("{0}.xml", Path.GetFileName(file.Name)); string outputName = Path.Combine(file.DirectoryName, fileName); using (FileStream input = new FileStream(file.FullName, FileMode.Open)) using (FileStream output = new FileStream(outputName, FileMode.Create)) { try { FoxLookupTable lookupTable = new FoxLookupTable(GlobalHashNameDictionary); var foxFile = FoxFile.ReadFoxFile(input, lookupTable); FoxConverter.DecompileFox(foxFile, output); } catch (Exception e) { Console.WriteLine("Error decompiling {0}: {1}", file.FullName, e); } } }
public void Import(Stream input, string path) { var lookupTable = new FoxLookupTable(GlobalHashNameDictionary); var foxFile = FoxFile.ReadFoxFile(input, lookupTable); IEntityReferenceResolver referenceResolver = new EntityReferenceResolver(); Framework.Tpp.Classes.DataSet dataSet = null; // Load each Entity. ICollection <Entity> entities = new List <Entity>(); foreach (var entry in foxFile.Entities) { var entity = EntityFactory.MakeEntity(entry, entityTypes, unimplementedTypeTable, commandDispatcher, referenceResolver); if (entity != null) { entities.Add(entity); } if (!(entity is Framework.Tpp.Classes.DataSet)) { continue; } dataSet = entity as Framework.Tpp.Classes.DataSet; dataSet.SetPath(path); } // Call OnLoaded() on the new Entities. var autoResetEvent = commandDispatcher.DispatchCommand(new InitializeEntities(dataSet, entities)); autoResetEvent.WaitOne(); // Generate new Entity classes. foreach (var unimplementedType in unimplementedTypeTable) { Debug.Log("Generating C# class for type " + unimplementedType.Key); EntityClassGenerator.GenerateEntityClass(unimplementedType.Value); } }