Example #1
0
        internal void Import(string path)
        {
            PatchReader reader = new PatchReader(File.OpenRead(path));
            string ext = Path.GetExtension(path);

            if( ext == ".uop" )
            {
                if( reader.ReadInt32() != PatchReader.UOPHeader )
                {
                    MessageBox.Show("Invalid UOP file, Aborting", "Invalid File");
                    return;
                }

                int count = reader.ReadInt32();
                reader.ReadInt32();//UNKNOWN FIELD

                for( int i = 0; i < count; i++ )
                {
                    Patch p = reader.ReadUOPPatch();

                    if( IsValid(p.FileID) && !ContainsPatch(p) )
                        _patches.Add(p);
                }
            }
            else if ( ext == ".muo" )
            {
                if( reader.ReadInt32() != PatchReader.MUOHeader )
                {
                    MessageBox.Show("Invalid MUO file, Aborting", "Invalid File");
                    return;
                }

                string[] data = reader.ReadMUOHeaderData();
                int count = reader.ReadInt32();

                for( int i = 0; i < count; i++ )
                {
                    Patch p = reader.ReadMUOPatch();

                    if( IsValid(p.FileID) && !ContainsPatch(p) )
                        _patches.Add(p);
                }
            }
            else if( ext == ".puo" )
            {
                if( reader.ReadInt32() != PatchReader.UOPHeader )
                {
                    MessageBox.Show("Invalid UOP file, Aborting", "Invalid File");
                    return;
                }
                reader.Close();

                PatchUOFileReader puoReader = new PatchUOFileReader(File.OpenRead(path));

                List<Patch> patches = puoReader.ReadPatches();
                for( int i = 0; i < patches.Count; i++ )
                {
                    Patch p = patches[i];

                    if( IsValid(p.FileID) && !ContainsPatch(p) )
                        _patches.Add(p);
                }

                puoReader.Close();
            }
            else if( ext == ".mul" )
            {
                try
                {
                    int count = reader.ReadInt32();

                    for( int i = 0; i < count; i++ )
                    {
                        Patch p = reader.ReadVerdataPatch();

                        if( IsValid(p.FileID) && !ContainsPatch(p) )
                            _patches.Add(p);
                    }
                }
                catch
                {
                    MessageBox.Show("Invalid or corrupt verdata file.", "Error");
                }
            }
            else
                MessageBox.Show("That file extension is invalid.", "Not Supported");

            if( reader != null )
                reader.Close();
        }