Example #1
0
            public ObjectEntry(string json, Manifest.Data data)
            {
                JSON = json;

                this.ID  = data.id;
                this.Key = data.key;
            }
Example #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));
        }