// How to specify version? public static string SerializeManifest(string inputfile, int version) { var outfile = Path.Combine(Directory.GetParent(inputfile).FullName, Path.GetFileNameWithoutExtension(inputfile) + @".m3m"); using MemoryStream fs = new MemoryStream(); fs.WriteStringLatin1(MERGEMOD_MAGIC); fs.WriteByte((byte)version); IList <string> messages = null; switch (version) { case 1: messages = MergeMod1.Serialize(fs, inputfile); break; default: throw new Exception(M3L.GetString(M3L.string_interp_unsupportedMergeModVersionVersionX, version)); } if (messages != null) { // Will be caught higher up throw new Exception(M3L.GetString(M3L.string_interp_invalidMergeModManifestReason, string.Join('\n', messages))); } fs.WriteToFile(outfile); return(outfile); }
public static IMergeMod LoadMergeMod(Stream mergeFileStream, string filename, bool loadAssets) { if (mergeFileStream.ReadStringASCII(4) != MERGEMOD_MAGIC) { throw new Exception(M3L.GetString(M3L.string_mergeModFileDoesNotHaveCorrectMagicHeader)); } var version = mergeFileStream.ReadByte(); switch (version) { case 1: return(MergeMod1.ReadMergeMod(mergeFileStream, filename, loadAssets)); default: return(null); } }