Reconstruct resource structure.
This commit is contained in:
@@ -62,7 +62,7 @@ namespace Cryville.Crtr.Browsing {
|
||||
var meta = new ChartMeta();
|
||||
string name = item.Name;
|
||||
string desc = "(Unknown)";
|
||||
var metaFile = new FileInfo(item.FullName + "/meta.json");
|
||||
var metaFile = new FileInfo(item.FullName + "/.umgc");
|
||||
if (metaFile.Exists) {
|
||||
using (var reader = new StreamReader(metaFile.FullName)) {
|
||||
meta = JsonConvert.DeserializeObject<ChartMeta>(reader.ReadToEnd());
|
||||
@@ -91,7 +91,7 @@ namespace Cryville.Crtr.Browsing {
|
||||
public ChartDetail GetItemDetail(int id) {
|
||||
var item = items[id];
|
||||
var meta = new ChartMeta();
|
||||
var metaFile = new FileInfo(item.FullName + "/meta.json");
|
||||
var metaFile = new FileInfo(item.FullName + "/.umgc");
|
||||
if (metaFile.Exists) {
|
||||
using (var reader = new StreamReader(metaFile.FullName)) {
|
||||
meta = JsonConvert.DeserializeObject<ChartMeta>(reader.ReadToEnd());
|
||||
@@ -114,7 +114,13 @@ namespace Cryville.Crtr.Browsing {
|
||||
}
|
||||
|
||||
public string GetItemPath(int id) {
|
||||
return items[id].Name + "/.umgc";
|
||||
var item = items[id];
|
||||
var meta = new ChartMeta();
|
||||
var metaFile = new FileInfo(item.FullName + "/.umgc");
|
||||
using (var reader = new StreamReader(metaFile.FullName)) {
|
||||
meta = JsonConvert.DeserializeObject<ChartMeta>(reader.ReadToEnd());
|
||||
}
|
||||
return string.Format("{0}/{1}.json", items[id].Name, meta.data);
|
||||
}
|
||||
|
||||
public bool ImportItemFrom(string path) {
|
||||
@@ -137,29 +143,38 @@ namespace Cryville.Crtr.Browsing {
|
||||
var tres = (RawChartResource)res;
|
||||
var dir = new DirectoryInfo(_rootPath + "/charts/" + res.Name);
|
||||
if (!dir.Exists) dir.Create();
|
||||
using (var writer = new StreamWriter(dir.FullName + "/.umgc")) {
|
||||
using (var writer = new StreamWriter(dir.FullName + "/.json")) {
|
||||
writer.Write(JsonConvert.SerializeObject(tres.Main, Game.GlobalJsonSerializerSettings));
|
||||
}
|
||||
using (var writer = new StreamWriter(dir.FullName + "/meta.json")) {
|
||||
using (var writer = new StreamWriter(dir.FullName + "/.umgc")) {
|
||||
tres.Meta.data = "";
|
||||
writer.Write(JsonConvert.SerializeObject(tres.Meta, Game.GlobalJsonSerializerSettings));
|
||||
}
|
||||
if (tres.Meta.cover != null)
|
||||
new FileInfo(Path.Combine(file.Directory.FullName, tres.Meta.cover))
|
||||
.CopyTo(Path.Combine(dir.FullName, tres.Meta.cover), true);
|
||||
}
|
||||
else if (res is FileResource) {
|
||||
var tres = (FileResource)res;
|
||||
FileInfo dest;
|
||||
// TODO chart, ruleset, skin
|
||||
if (res is CoverResource)
|
||||
dest = new FileInfo(_rootPath + "/charts/" + res.Name + "/" + tres.Source.Name);
|
||||
DirectoryInfo dest;
|
||||
if (res is ChartResource)
|
||||
dest = new DirectoryInfo(_rootPath + "/charts/" + res.Name);
|
||||
else if (res is RulesetResource)
|
||||
dest = new DirectoryInfo(_rootPath + "/rulesets/" + res.Name);
|
||||
else if (res is SkinResource)
|
||||
dest = new DirectoryInfo(_rootPath + "/skins/" + res.Name);
|
||||
else if (res is SongResource)
|
||||
dest = new FileInfo(_rootPath + "/songs/" + res.Name + "/" + tres.Source.Extension);
|
||||
dest = new DirectoryInfo(_rootPath + "/songs/" + res.Name);
|
||||
else {
|
||||
LogAndPopup(3, "Attempt to import unsupported file resource: {0}", res);
|
||||
continue;
|
||||
}
|
||||
var dir = dest.Directory;
|
||||
if (!dest.Exists) {
|
||||
if (!dir.Exists) dir.Create();
|
||||
tres.Source.CopyTo(dest.FullName);
|
||||
dest.Create();
|
||||
tres.Master.CopyTo(Path.Combine(dest.FullName, tres.Master.Extension));
|
||||
foreach (var attachment in tres.Attachments) {
|
||||
attachment.CopyTo(Path.Combine(dest.FullName, attachment.Name));
|
||||
}
|
||||
}
|
||||
else LogAndPopup(1, "Resource already exists: {0}", res);
|
||||
}
|
||||
|
Reference in New Issue
Block a user