LootDumpProcessor/Storage/Collections/SubdivisionedKeyableDictionary.cs
2023-08-12 19:08:38 +01:00

51 lines
1.3 KiB
C#

using System.Text.Json.Serialization;
using Newtonsoft.Json;
namespace LootDumpProcessor.Storage.Collections;
public class SubdivisionedKeyableDictionary<K, V> : Dictionary<K, V>, IKeyable
{
[JsonProperty("__id__")]
[JsonPropertyName("__id__")]
public string __ID { get; set; } = Guid.NewGuid().ToString();
[JsonProperty("extras")]
[JsonPropertyName("extras")]
public string? Extras
{
get
{
if (ExtraSubdivisions == null)
return null;
return string.Join(",", ExtraSubdivisions);
}
set { ExtraSubdivisions = value.Split(","); }
}
[Newtonsoft.Json.JsonIgnore]
[System.Text.Json.Serialization.JsonIgnore]
private string[]? ExtraSubdivisions { get; set; }
public IKey GetKey()
{
if (ExtraSubdivisions != null)
{
var subdivisions = new List<string>
{
"dictionaries"
};
subdivisions.AddRange(ExtraSubdivisions);
subdivisions.Add(__ID);
return new SubdivisionedUniqueKey(subdivisions.ToArray());
}
else
{
return new SubdivisionedUniqueKey(new[] { "dictionaries", __ID });
}
}
public void AddExtraSubdivisions(string[] extras)
{
ExtraSubdivisions = extras;
}
}