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)); }
internal Modification(string directory, ModificationDescription description) { BaseContent = new DirectoryContent(directory); Description = description; }
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); }
public ModificationInfo(string modificationDirectory, ModificationDescription description) { ModificationDirectory = modificationDirectory; Description = description; }