using System.Collections.Generic; using Dalamud.Plugin.Services; using Lumina.Excel; using Lumina.Excel.Sheets; namespace Questionable.Data; internal sealed class HuntMobData { private readonly HashSet _aRankDataIds = new HashSet(); private readonly HashSet _sRankDataIds = new HashSet(); private readonly HashSet _allHuntMobDataIds = new HashSet(); public const float SafeDistance = 15f; public IReadOnlySet ARankDataIds => _aRankDataIds; public IReadOnlySet SRankDataIds => _sRankDataIds; public IReadOnlySet AllHuntMobDataIds => _allHuntMobDataIds; public HuntMobData(IDataManager dataManager) { ExcelSheet excelSheet = dataManager.GetExcelSheet(); if (excelSheet == null) { return; } foreach (NotoriousMonster item in excelSheet) { byte rank = item.Rank; if ((uint)(rank - 2) > 1u) { continue; } uint rowId = item.BNpcBase.RowId; if (rowId != 0) { _allHuntMobDataIds.Add(rowId); if (item.Rank == 2) { _aRankDataIds.Add(rowId); } else if (item.Rank == 3) { _sRankDataIds.Add(rowId); } } } } public bool IsHuntMob(uint dataId) { return _allHuntMobDataIds.Contains(dataId); } public bool IsARank(uint dataId) { return _aRankDataIds.Contains(dataId); } public bool IsSRank(uint dataId) { return _sRankDataIds.Contains(dataId); } }