Beispiel #1
0
        private static void Complete(ModPackage package)
        {
            InitializeSerialization(package);

            CoreManager.FinishedSerialization();
            Debug.Log("Serialized " + package.name);
        }
Beispiel #2
0
        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));
        }