Ejemplo n.º 1
0
 public void Save(string path)
 {
     using (var w = new BinaryWriter(File.Create(path)))
     {
         ResourceSignature.Write(w);
         w.Write(TypeToString(Type));
         w.Write(Version);
         w.Write(ResourceSignature.TimeStamp);
         ID.Write(w);
         WriteData(w);
     }
 }
Ejemplo n.º 2
0
        private static void Description0000to0001(string path)
        {
            string name = null;

            using (var reader = new BinaryReader(File.OpenRead(path)))
            {
                if (!Description.ReadSignature(reader))
                {
                    throw new Exception("Invalid description base file format.");
                }
                reader.ReadString(); // do not care about current version
                name = reader.ReadString();
            }

            var resources_path = Path.GetFullPath(path);

            resources_path = Path.Combine(Path.GetDirectoryName(resources_path), "Resources");
            var files = Directory.GetFiles(resources_path, "*", SearchOption.AllDirectories);

            foreach (var file in files)
            {
                if (Resource.GetType(file).ValidBinary())
                {
                    var bytes = File.ReadAllBytes(file);
                    using (var reader = new BinaryReader(new MemoryStream(bytes)))
                        using (var writer = new BinaryWriter(File.OpenWrite(file)))
                        {
                            ResourceSignature.Read(reader);
                            ResourceSignature.Write(writer);
                            writer.Write(reader.ReadString());
                            writer.Write(reader.ReadString());
                            writer.Write(reader.ReadString());
                            new ResourceID().Write(writer);
                            writer.Write(reader.ReadBytes((int)(reader.BaseStream.Length - reader.BaseStream.Position)));
                        }
                }
            }

            using (var writer = new BinaryWriter(File.OpenWrite(path)))
            {
                Description.WriteSignature(writer);
                writer.Write("0.0.0.1");
                writer.Write(name);
            }
        }