OrangeGuidanceTomestone/client/Pack.cs

42 lines
1.2 KiB
C#
Raw Normal View History

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[] {
2022-09-04 10:37:03 +00:00
"ffxiv",
2022-09-03 12:59:06 +00:00
"elden-ring",
2022-09-04 23:27:51 +00:00
"bloodborne",
2022-09-04 10:37:03 +00:00
"dark-souls",
2022-09-03 12:59:06 +00:00
}
.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; }
}