public void WriteDescription(string directory, ModificationDescription description)
        {
            string filePath = Path.Combine(directory, DescriptionFileName);

            using (var stream = new FileStream(filePath, FileMode.Create, FileAccess.ReadWrite, FileShare.None))
            {
                descriptionSerializer.Serialize(stream, description);
            }
        }
 public void WriteDescription(Content content, ModificationDescription description)
 {
     using (content.BeginUpdateAuto())
     {
         using (var stream = content.GetOutputStream(DescriptionFileName))
         {
             descriptionSerializer.Serialize(stream, description);
         }
     }
 }
        /// <summary>
        /// 创建可读内容,若目录已经存在则返回异常;
        /// </summary>
        public ModificationInfo Create(string directory, ModificationDescription description)
        {
            if (ExistDescription(directory))
            {
                throw new IOException("该目录为模组目录;");
            }

            Directory.CreateDirectory(directory);
            WriteDescription(directory, description);
            var modificationInfo = new ModificationInfo(directory, description);

            return(modificationInfo);
        }
        /// <summary>
        /// 获取到模组实例(仅Unity线程调用);
        /// </summary>
        /// <exception cref="DirectoryNotFoundException"></exception>
        /// <exception cref="FileNotFoundException"></exception>
        /// <exception cref="IOException"></exception>
        public Modification Read(string directory)
        {
            if (!Directory.Exists(directory))
            {
                throw new DirectoryNotFoundException(directory);
            }

            ModificationDescription description = ReadDescription(directory);

            Modification modification = new Modification(directory, description);

            modification.LoadAllAssetBundles();

            return(modification);
        }
        /// <summary>
        /// 异步获取到模组实例;
        /// </summary>
        /// <exception cref="DirectoryNotFoundException"></exception>
        /// <exception cref="FileNotFoundException"></exception>
        /// <exception cref="IOException"></exception>
        public async Task <Modification> ReadAsync(string directory)
        {
            if (!Directory.Exists(directory))
            {
                throw new DirectoryNotFoundException(directory);
            }

            ModificationDescription description = ReadDescription(directory);

            Modification modification            = new Modification(directory, description);
            var          assetBundleLoadWorkTask = await UnityThread.Run(modification.LoadAllAssetBundlesAsync);

            await assetBundleLoadWorkTask;

            return(modification);
        }
        /// <summary>
        /// 读取模组信息;
        /// </summary>
        public ModificationInfo ReadInfo(string directory)
        {
            ModificationDescription description = ReadDescription(directory);

            return(new ModificationInfo(directory, description));
        }
Example #7
0
 internal Modification(string directory, ModificationDescription description)
 {
     BaseContent = new DirectoryContent(directory);
     Description = description;
 }
Example #8
0
 private void AreEqual(ModificationDescription v1, ModificationDescription v2)
 {
     Assert.AreEqual(v1.ID, v2.ID);
     Assert.AreEqual(v1.Name, v2.Name);
     Assert.AreEqual(v1.Tags, v2.Tags);
 }
Example #9
0
 public ModificationInfo(string modificationDirectory, ModificationDescription description)
 {
     ModificationDirectory = modificationDirectory;
     Description           = description;
 }