Questionable/Questionable/Data/AetherCurrentData.cs
2024-07-14 16:17:08 +02:00

31 lines
1.0 KiB
C#

using System.Collections.Immutable;
using System.Linq;
using Dalamud.Plugin.Services;
using Lumina.Excel.GeneratedSheets2;
namespace Questionable.Data;
internal sealed class AetherCurrentData
{
private readonly ImmutableDictionary<ushort, ImmutableList<uint>> _overworldCurrents;
public AetherCurrentData(IDataManager dataManager)
{
_overworldCurrents = dataManager.GetExcelSheet<AetherCurrentCompFlgSet>()!
.Where(x => x.RowId > 0)
.Where(x => x.Territory.Value != null)
.ToImmutableDictionary(
x => (ushort)x.Territory.Row,
x => x.AetherCurrents
.Where(y => y.Row > 0 && y.Value?.Quest.Row == 0)
.Select(y => y.Row)
.ToImmutableList());
}
public bool IsValidAetherCurrent(ushort territoryId, uint aetherCurrentId)
{
return _overworldCurrents.TryGetValue(territoryId, out ImmutableList<uint>? currentIds) &&
currentIds.Contains(aetherCurrentId);
}
}