Questionable/Questionable/Data/AetherCurrentData.cs

31 lines
1.0 KiB
C#
Raw Normal View History

using System.Collections.Immutable;
using System.Linq;
using Dalamud.Plugin.Services;
2024-11-16 20:53:37 +00:00
using Lumina.Excel.Sheets;
namespace Questionable.Data;
internal sealed class AetherCurrentData
{
private readonly ImmutableDictionary<ushort, ImmutableList<uint>> _overworldCurrents;
2024-07-14 14:17:08 +00:00
public AetherCurrentData(IDataManager dataManager)
{
_overworldCurrents = dataManager.GetExcelSheet<AetherCurrentCompFlgSet>()
.Where(x => x.RowId > 0)
2024-11-16 20:53:37 +00:00
.Where(x => x.Territory.IsValid)
.ToImmutableDictionary(
2024-11-16 20:53:37 +00:00
x => (ushort)x.Territory.RowId,
x => x.AetherCurrents
2024-11-16 20:53:37 +00:00
.Where(y => y.RowId > 0 && y.Value.Quest.RowId == 0)
.Select(y => y.RowId)
.ToImmutableList());
}
public bool IsValidAetherCurrent(ushort territoryId, uint aetherCurrentId)
{
return _overworldCurrents.TryGetValue(territoryId, out ImmutableList<uint>? currentIds) &&
currentIds.Contains(aetherCurrentId);
}
}