39 lines
1.1 KiB
C#
39 lines
1.1 KiB
C#
using YamlDotNet.Serialization.NamingConventions;
|
|
|
|
namespace OrangeGuidanceTomestone;
|
|
|
|
[Serializable]
|
|
public class Pack {
|
|
internal static Lazy<Pack[]> All { get; } = new(() => {
|
|
var des = new YamlDotNet.Serialization.DeserializerBuilder()
|
|
.WithNamingConvention(UnderscoredNamingConvention.Instance)
|
|
.Build();
|
|
return new[] {
|
|
"ffxiv",
|
|
"elden-ring",
|
|
"dark-souls",
|
|
}
|
|
.Select(name => {
|
|
try {
|
|
return des.Deserialize<Pack>(Resourcer.Resource.AsString($"{name}.yaml"));
|
|
} catch {
|
|
return null;
|
|
}
|
|
})
|
|
.Where(pack => pack != null)
|
|
.ToArray()!;
|
|
});
|
|
|
|
public string Name { get; init; }
|
|
public Guid Id { get; init; }
|
|
public string[] Templates { get; init; }
|
|
public string[] Conjunctions { get; init; }
|
|
public List<WordList> Words { get; init; }
|
|
}
|
|
|
|
[Serializable]
|
|
public class WordList {
|
|
public string Name { get; init; }
|
|
public string[] Words { get; init; }
|
|
}
|