41 lines
1.4 KiB
C#
41 lines
1.4 KiB
C#
using Cryville.Common;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
|
|
namespace Cryville.Crtr.Browsing {
|
|
public abstract class ResourceConverter {
|
|
public abstract string[] GetSupportedFormats();
|
|
public abstract IEnumerable<Resource> ConvertFrom(FileInfo file);
|
|
}
|
|
public abstract class Resource {
|
|
protected Resource(string name) {
|
|
Name = StringUtils.EscapeFileName(name);
|
|
}
|
|
public string Name { get; private set; }
|
|
public abstract bool Valid { get; }
|
|
public override string ToString() {
|
|
return string.Format("{0} ({1})", Name, ReflectionHelper.GetSimpleName(GetType()));
|
|
}
|
|
}
|
|
public class ChartResource : Resource {
|
|
public ChartResource(string name, Chart main, ChartMeta meta) : base(name) {
|
|
Main = main; Meta = meta;
|
|
}
|
|
public Chart Main { get; private set; }
|
|
public ChartMeta Meta { get; private set; }
|
|
public override bool Valid { get { return true; } }
|
|
}
|
|
public abstract class FileResource : Resource {
|
|
public FileResource(string name, FileInfo src) : base(name) {
|
|
Source = src;
|
|
}
|
|
public FileInfo Source { get; private set; }
|
|
public override bool Valid { get { return Source.Exists; } }
|
|
}
|
|
public class CoverResource : FileResource {
|
|
public CoverResource(string name, FileInfo src) : base(name, src) { }
|
|
}
|
|
public class SongResource : FileResource {
|
|
public SongResource(string name, FileInfo src) : base(name, src) { }
|
|
}
|
|
} |