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