2022-09-03 22:44:43 +00:00
|
|
|
using Dalamud.Logging;
|
2022-09-03 12:59:06 +00:00
|
|
|
using YamlDotNet.Serialization.NamingConventions;
|
|
|
|
|
2022-09-03 02:59:45 +00:00
|
|
|
namespace OrangeGuidanceTomestone;
|
|
|
|
|
|
|
|
[Serializable]
|
|
|
|
public class Pack {
|
2022-09-03 12:59:06 +00:00
|
|
|
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 {
|
2022-09-03 22:44:43 +00:00
|
|
|
return des.Deserialize<Pack>(Resourcer.Resource.AsStringUnChecked($"OrangeGuidanceTomestone.packs.{name}.yaml"));
|
|
|
|
} catch (Exception ex) {
|
|
|
|
PluginLog.LogError(ex, name);
|
2022-09-03 12:59:06 +00:00
|
|
|
return null;
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.Where(pack => pack != null)
|
|
|
|
.ToArray()!;
|
|
|
|
});
|
|
|
|
|
2022-09-03 02:59:45 +00:00
|
|
|
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; }
|
|
|
|
}
|