Ejemplo n.º 1
0
        public static void CompileFox(Stream input, Stream output)
        {
            FoxFile foxFile = ReadFoxFile(input);

            foxFile.CalculateHashes();
            foxFile.CollectStringLookupLiterals();
            foxFile.Write(output);
        }
Ejemplo n.º 2
0
        public static void DecompileFox(FoxFile foxFile, Stream output)
        {
            var settings = new XmlWriterSettings
            {
                Encoding = Encoding.UTF8,
                Indent   = true
            };

            XmlWriter     writer     = XmlWriter.Create(output, settings);
            XmlSerializer serializer = new XmlSerializer(typeof(FoxFile));

            serializer.Serialize(writer, foxFile);
            writer.Close();
        }
Ejemplo n.º 3
0
        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);
                    }
                }
        }
Ejemplo n.º 4
0
        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);
            }
        }