private static void Complete(ModPackage package) { InitializeSerialization(package); CoreManager.FinishedSerialization(); Debug.Log("Serialized " + package.name); }
public static void DeserializePackage(string path) { using (ZipFile zip = ZipFile.Read(path)) { foreach (ZipEntry entry in zip) { using (MemoryStream stream = new MemoryStream()) { entry.Extract(stream); if (!_serializedData.ContainsKey(entry.FileName)) { _serializedData.Add(entry.FileName, stream.ToArray()); } } } } if (!_serializedData.ContainsKey(Utility.MANIFEST_NAME)) { throw new NullReferenceException("No manifest file in " + path); } Manifest.Instance = Json.ToObject <Manifest>(Utility.ToString(_serializedData[Utility.MANIFEST_NAME])); _serializedData.Remove(Utility.MANIFEST_NAME); foreach (KeyValuePair <string, byte[]> file in _serializedData) { if (Manifest.Instance.data.Any(x => x.localPath == file.Key)) { Manifest.Data data = Manifest.Instance.data.Find(x => x.localPath == file.Key); if (!_objectReferences.ContainsKey(data.id)) { ObjectEntry entry = new ObjectEntry(Utility.ToString(file.Value), data); _objectReferences.Add(data.id, entry); } } } foreach (KeyValuePair <int, ObjectEntry> keyValuePair in _objectReferences) { keyValuePair.Value.Deserialize(); ExecuteID(keyValuePair.Key); } CheckForCachedActions(); CoreManager.FinishedSerialization(); Debug.Log("Deserialized " + Path.GetFileNameWithoutExtension(path)); }