Implement extension importer.
This commit is contained in:
@@ -26,7 +26,7 @@ namespace Cryville.Crtr.Browsing {
|
|||||||
return _localRes;
|
return _localRes;
|
||||||
}
|
}
|
||||||
public static void Init(string rootPath) {
|
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 asms = AppDomain.CurrentDomain.GetAssemblies().Select(a => a.GetName().Name).ToHashSet();
|
||||||
var modules = new Queue<ModuleItem>();
|
var modules = new Queue<ModuleItem>();
|
||||||
var extensionDir = new DirectoryInfo(Path.Combine(rootPath, "extensions"));
|
var extensionDir = new DirectoryInfo(Path.Combine(rootPath, "extensions"));
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
using Cryville.Common;
|
using Cryville.Common;
|
||||||
using Cryville.Common.Unity;
|
using Cryville.Common.Unity;
|
||||||
using Cryville.Crtr.Extension;
|
using Cryville.Crtr.Extension;
|
||||||
|
using Cryville.Crtr.Extensions;
|
||||||
using Cryville.Crtr.Extensions.Umg;
|
using Cryville.Crtr.Extensions.Umg;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
@@ -153,8 +154,14 @@ namespace Cryville.Crtr.Browsing {
|
|||||||
else if (res is FileResource) {
|
else if (res is FileResource) {
|
||||||
var tres = (FileResource)res;
|
var tres = (FileResource)res;
|
||||||
DirectoryInfo dest;
|
DirectoryInfo dest;
|
||||||
|
bool singleFileFlag = false;
|
||||||
if (res is ChartResource)
|
if (res is ChartResource)
|
||||||
dest = new DirectoryInfo(_rootPath + "/charts/" + res.Name);
|
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)
|
else if (res is RulesetResource)
|
||||||
dest = new DirectoryInfo(_rootPath + "/rulesets/" + res.Name);
|
dest = new DirectoryInfo(_rootPath + "/rulesets/" + res.Name);
|
||||||
else if (res is SkinResource)
|
else if (res is SkinResource)
|
||||||
@@ -165,10 +172,11 @@ namespace Cryville.Crtr.Browsing {
|
|||||||
LogAndPopup(3, "Attempt to import unsupported file resource: {0}", res);
|
LogAndPopup(3, "Attempt to import unsupported file resource: {0}", res);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
if (!dest.Exists) {
|
if (singleFileFlag || !dest.Exists) {
|
||||||
dest.Create();
|
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) {
|
foreach (var attachment in tres.Attachments) {
|
||||||
|
if (singleFileFlag) throw new InvalidOperationException("Internal error");
|
||||||
attachment.CopyTo(Path.Combine(dest.FullName, attachment.Name));
|
attachment.CopyTo(Path.Combine(dest.FullName, attachment.Name));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,10 +1,12 @@
|
|||||||
using Cryville.Crtr.Extension;
|
using Cryville.Crtr.Extension;
|
||||||
|
using Cryville.Crtr.Extensions.Umg;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Cryville.Crtr.Extensions.Umg {
|
namespace Cryville.Crtr.Extensions {
|
||||||
public class Extension : ExtensionInterface {
|
public class Extension : ExtensionInterface {
|
||||||
public override IEnumerable<ResourceConverter> GetResourceConverters() {
|
public override IEnumerable<ResourceConverter> GetResourceConverters() {
|
||||||
return new ResourceConverter[] {
|
return new ResourceConverter[] {
|
||||||
|
new ExtensionImporter(),
|
||||||
new ChartResourceImporter(),
|
new ChartResourceImporter(),
|
||||||
new RulesetResourceImporter(),
|
new RulesetResourceImporter(),
|
||||||
new SkinResourceImporter(),
|
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