Implement extension importer.
This commit is contained in:
@@ -26,7 +26,7 @@ namespace Cryville.Crtr.Browsing {
|
||||
return _localRes;
|
||||
}
|
||||
public static void Init(string rootPath) {
|
||||
LoadExtension(typeof(Extensions.Umg.Extension));
|
||||
LoadExtension(typeof(Extensions.Extension));
|
||||
var asms = AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName().Name).ToHashSet();
|
||||
var modules = new Queue<ModuleItem>();
|
||||
var extensionDir = new DirectoryInfo(Path.Combine(rootPath, "extensions"));
|
||||
|
@@ -1,6 +1,7 @@
|
||||
using Cryville.Common;
|
||||
using Cryville.Common.Unity;
|
||||
using Cryville.Crtr.Extension;
|
||||
using Cryville.Crtr.Extensions;
|
||||
using Cryville.Crtr.Extensions.Umg;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
@@ -153,8 +154,14 @@ namespace Cryville.Crtr.Browsing {
|
||||
else if (res is FileResource) {
|
||||
var tres = (FileResource)res;
|
||||
DirectoryInfo dest;
|
||||
bool singleFileFlag = false;
|
||||
if (res is ChartResource)
|
||||
dest = new DirectoryInfo(_rootPath + "/charts/" + res.Name);
|
||||
else if (res is ExtensionResource) {
|
||||
dest = new DirectoryInfo(_rootPath + "/extensions");
|
||||
singleFileFlag = true;
|
||||
Popup.Create("Please restart the game to reload the extensions");
|
||||
}
|
||||
else if (res is RulesetResource)
|
||||
dest = new DirectoryInfo(_rootPath + "/rulesets/" + res.Name);
|
||||
else if (res is SkinResource)
|
||||
@@ -165,10 +172,11 @@ namespace Cryville.Crtr.Browsing {
|
||||
LogAndPopup(3, "Attempt to import unsupported file resource: {0}", res);
|
||||
continue;
|
||||
}
|
||||
if (!dest.Exists) {
|
||||
if (singleFileFlag || !dest.Exists) {
|
||||
dest.Create();
|
||||
tres.Master.CopyTo(Path.Combine(dest.FullName, tres.Master.Extension));
|
||||
tres.Master.CopyTo(Path.Combine(dest.FullName, singleFileFlag ? tres.Master.Name : tres.Master.Extension));
|
||||
foreach (var attachment in tres.Attachments) {
|
||||
if (singleFileFlag) throw new InvalidOperationException("Internal error");
|
||||
attachment.CopyTo(Path.Combine(dest.FullName, attachment.Name));
|
||||
}
|
||||
}
|
||||
|
@@ -1,10 +1,12 @@
|
||||
using Cryville.Crtr.Extension;
|
||||
using Cryville.Crtr.Extensions.Umg;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Cryville.Crtr.Extensions.Umg {
|
||||
namespace Cryville.Crtr.Extensions {
|
||||
public class Extension : ExtensionInterface {
|
||||
public override IEnumerable<ResourceConverter> GetResourceConverters() {
|
||||
return new ResourceConverter[] {
|
||||
new ExtensionImporter(),
|
||||
new ChartResourceImporter(),
|
||||
new RulesetResourceImporter(),
|
||||
new SkinResourceImporter(),
|
18
Assets/Cryville/Crtr/Extensions/ExtensionImporter.cs
Normal file
18
Assets/Cryville/Crtr/Extensions/ExtensionImporter.cs
Normal file
@@ -0,0 +1,18 @@
|
||||
using Cryville.Crtr.Extension;
|
||||
using System.IO;
|
||||
|
||||
namespace Cryville.Crtr.Extensions {
|
||||
internal class ExtensionImporter : ResourceConverter {
|
||||
static readonly string[] SUPPORTED_FORMATS = { ".dll" };
|
||||
public override string[] GetSupportedFormats() {
|
||||
return SUPPORTED_FORMATS;
|
||||
}
|
||||
|
||||
public override void Convert(FileInfo file, ConversionSession ses) {
|
||||
ses.AddResource(new ExtensionResource(file.Name, file));
|
||||
}
|
||||
}
|
||||
public class ExtensionResource : FileResource {
|
||||
public ExtensionResource(string name, FileInfo master) : base(name, master) { }
|
||||
}
|
||||
}
|
11
Assets/Cryville/Crtr/Extensions/ExtensionImporter.cs.meta
Normal file
11
Assets/Cryville/Crtr/Extensions/ExtensionImporter.cs.meta
Normal file
@@ -0,0 +1,11 @@
|
||||
fileFormatVersion: 2
|
||||
guid: c048eb442e4b9304eb0637599be1084d
|
||||
MonoImporter:
|
||||
externalObjects: {}
|
||||
serializedVersion: 2
|
||||
defaultReferences: []
|
||||
executionOrder: 0
|
||||
icon: {instanceID: 0}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
Reference in New Issue
Block a user