using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Numerics; using System.Runtime.CompilerServices; using System.Threading; using Dalamud.Plugin.Services; using LLib.Shop; using Lumina.Excel; using Lumina.Excel.Sheets; using Microsoft.Extensions.Logging; namespace Questionable.Data; internal sealed class MenderDataService(IDataManager dataManager, NpcPositionCache npcPositionCache, ILogger logger) { public static readonly IReadOnlyList CityFallbacks = new global::_003C_003Ez__ReadOnlyArray(new MenderNpc[3] { new MenderNpc(1003251u, 128, new Vector3(17.715698f, 40.200005f, 3.9520264f)), new MenderNpc(1000394u, 132, new Vector3(24.826416f, -8f, 93.18677f)), new MenderNpc(1004416u, 130, new Vector3(32.85266f, 6.999999f, -81.31531f)) }); private readonly object _lock = _202D_200B_206C_206F_206B_202D_202D_200C_206E_200B_202C_202E_202B_202B_202E_202B_206C_200E_200F_200D_202D_200F_206F_202D_200B_206D_200C_202D_206C_202D_200E_206C_200E_202E_206B_206D_202A_202A_206B_202D_202E(); private ILookup? _byTerritory; public MenderNpc? FindNearestInTerritory(ushort territoryId, Vector3 nearPosition) { object obj = _lock; bool flag = false; ILookup lookup; try { _206B_206E_200F_206B_206C_202D_202D_200F_200D_200D_202E_200B_202A_206C_202C_206F_202A_200F_206C_202E_202C_206E_200F_206C_200E_206F_202E_200F_202E_206E_200B_200E_202E_206D_202D_202B_200B_200E_206A_206D_202E(obj, ref flag); int num = ((_byTerritory != null) ? 669180943 : 669180941); while (true) { int num2 = num; int num3 = 669180942; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 0: num = 669180941; break; case 2: return null; case 3: num = (_206C_206D_206D_202A_206C_206A_206F_202C_200B_202E_206D_200C_206F_202A_200C_202D_202D_202E_206E_200C_202D_206B_200D_202D_200F_202C_200B_206D_200C_206A_206B_202D_202D_200E_206B_202E_202B_206B_206B_206C_202E(npcPositionCache) ? 669180943 : 669180940); break; case 1: lookup = _byTerritory ?? (_byTerritory = BuildIndex()); goto end_IL_0041; } continue; end_IL_0041: break; } } finally { int num = ((!flag) ? 242402811 : 242402808); while (true) { int num7 = num; int num3 = 242402810; int num4 = num7; switch ((num4 | num3) - (num4 & num3)) { case 0: num = 242402808; break; case 2: _206A_202A_206B_200D_200F_206D_200B_202A_200E_206C_202B_200D_200E_202B_206D_200D_202D_200C_206C_200F_206F_206A_206A_206C_200C_206C_206B_200C_206A_202B_206A_202D_206A_206E_206C_206D_200F_206D_200B_206B_202E(obj); num = 242402811; break; case 1: goto end_IL_00fd; } continue; end_IL_00fd: break; } } return lookup[territoryId].OrderBy((MenderNpc x) => Vector3.DistanceSquared(x.Position, nearPosition)).FirstOrDefault(); } [MethodImpl(MethodImplOptions.NoInlining)] private ILookup BuildIndex() { ExcelSheet excelSheet = dataManager.GetExcelSheet(); List list = new List(); IEnumerator enumerator = _200C_206D_202E_200C_202C_206C_200E_206C_206B_202C_200B_202B_206A_202C_206B_206E_202E_200E_202C_202D_202E_202B_206A_202D_200E_206C_206D_200C_202B_202C_202A_206B_200E_206E_200C_206C_200C_206A_206A_202E_202E(npcPositionCache).GetEnumerator(); try { int num = -898238961; bool flag = default(bool); int num5 = default(int); (ushort, Vector3)? tuple = default((ushort, Vector3)?); uint current = default(uint); ENpcBase row = default(ENpcBase); while (true) { int num2 = num; int num3 = -898238961; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 5: flag = false; num5 = 0; num = -898238963; break; case 8: tuple = _202E_202B_206D_200C_200B_200E_206F_200C_202B_202D_206A_206A_206A_206D_206B_200D_206B_206F_206A_206C_200E_206C_200F_202E_202B_206A_200B_206E_200D_206D_206F_206D_206E_206E_206A_206D_200E_200E_206B_206D_202E(npcPositionCache, current); num = ((!tuple.HasValue) ? (-898238961) : (-898238971)); break; case 3: num = -898238961; break; case 9: { int num6 = num5; num3 = 1; num4 = num6; int num7 = num4 ^ num3; int num8 = num4 & num3; num5 = num7 + (num8 + num8); num = -898238963; break; } case 1: flag = true; num = -898238967; break; case 0: num = (_202D_202D_200C_200B_202B_206B_206E_206E_202B_206B_206D_206D_202A_206F_202C_200F_202E_206B_202A_206E_206A_200E_206F_200B_206B_200B_202A_200C_202E_200E_202C_206A_206F_206F_200D_206D_200B_200E_200C_202D_202E((IEnumerator)enumerator) ? (-898238965) : (-898238972)); break; case 4: current = enumerator.Current; num = ((!excelSheet.TryGetRow(current, out row)) ? (-898238961) : (-898238966)); break; case 2: num = ((num5 < row.ENpcData.Count) ? (-898238968) : (-898238967)); break; case 6: num = ((!flag) ? (-898238961) : (-898238969)); break; case 7: num = ((row.ENpcData[num5].RowId != 720915) ? (-898238970) : (-898238962)); break; case 10: { (ushort, Vector3) valueOrDefault = tuple.GetValueOrDefault(); list.Add(new MenderNpc(current, valueOrDefault.Item1, valueOrDefault.Item2)); num = -898238961; break; } case 11: goto end_IL_0039; } continue; end_IL_0039: break; } } finally { int num = ((enumerator == null) ? (-506737452) : (-506737451)); while (true) { int num9 = num; int num3 = -506737452; int num4 = num9; int num10 = num4 + num3; int num11 = num4 & num3; switch (num10 - (num11 + num11)) { case 2: num = -506737451; break; case 0: goto end_IL_023b; case 1: _206F_206B_206A_202C_200F_200D_206D_200B_202B_206A_202E_202E_200E_200C_200F_206C_202E_202E_206A_202B_200E_206A_206D_202E_206C_202A_206B_200D_202C_206B_202C_202C_202C_200D_206E_202B_202E_200E_206F_206B_202E((IDisposable)enumerator); num = -506737452; break; } continue; end_IL_023b: break; } } _206D_206B_200C_206E_202E_200B_206B_202C_206A_202A_202E_200C_206A_200E_206C_202A_200B_206C_202B_202B_206C_206D_202D_206A_202D_206D_202B_206E_200B_206B_200B_206A_206D_200B_206C_206D_206A_200E_202B_206B_202E((ILogger)logger, global::_003CModule_003E._202E_206C_200F_206B_206A_202A_202C_206F_200C_206C_202B_206B_206D_206D_206D_202D_206E_202E_206C_206E_206D_202C_206F_200D_202D_202E_206A_206D_202A_206A_202B_200D_200C_206D_202B_200B_200D_200C_206E_206B_202E(1337223984), new object[2] { list.Count, list.Select((MenderNpc x) => x.TerritoryId).Distinct().Count() }); return list.ToLookup((MenderNpc x) => x.TerritoryId); } static object _202D_200B_206C_206F_206B_202D_202D_200C_206E_200B_202C_202E_202B_202B_202E_202B_206C_200E_200F_200D_202D_200F_206F_202D_200B_206D_200C_202D_206C_202D_200E_206C_200E_202E_206B_206D_202A_202A_206B_202D_202E() { return new object(); } static void _206B_206E_200F_206B_206C_202D_202D_200F_200D_200D_202E_200B_202A_206C_202C_206F_202A_200F_206C_202E_202C_206E_200F_206C_200E_206F_202E_200F_202E_206E_200B_200E_202E_206D_202D_202B_200B_200E_206A_206D_202E(object P_0, ref bool P_1) { Monitor.Enter(P_0, ref P_1); } static bool _206C_206D_206D_202A_206C_206A_206F_202C_200B_202E_206D_200C_206F_202A_200C_202D_202D_202E_206E_200C_202D_206B_200D_202D_200F_202C_200B_206D_200C_206A_206B_202D_202D_200E_206B_202E_202B_206B_206B_206C_202E(NpcPositionCache P_0) { return P_0.IsBuilt; } static void _206A_202A_206B_200D_200F_206D_200B_202A_200E_206C_202B_200D_200E_202B_206D_200D_202D_200C_206C_200F_206F_206A_206A_206C_200C_206C_206B_200C_206A_202B_206A_202D_206A_206E_206C_206D_200F_206D_200B_206B_202E(object P_0) { Monitor.Exit(P_0); } static IReadOnlyCollection _200C_206D_202E_200C_202C_206C_200E_206C_206B_202C_200B_202B_206A_202C_206B_206E_202E_200E_202C_202D_202E_202B_206A_202D_200E_206C_206D_200C_202B_202C_202A_206B_200E_206E_200C_206C_200C_206A_206A_202E_202E(NpcPositionCache P_0) { return P_0.GetAllNpcIds(); } static (ushort, Vector3)? _202E_202B_206D_200C_200B_200E_206F_200C_202B_202D_206A_206A_206A_206D_206B_200D_206B_206F_206A_206C_200E_206C_200F_202E_202B_206A_200B_206E_200D_206D_206F_206D_206E_206E_206A_206D_200E_200E_206B_206D_202E(NpcPositionCache P_0, uint P_1) { return P_0.GetPosition(P_1); } static bool _202D_202D_200C_200B_202B_206B_206E_206E_202B_206B_206D_206D_202A_206F_202C_200F_202E_206B_202A_206E_206A_200E_206F_200B_206B_200B_202A_200C_202E_200E_202C_206A_206F_206F_200D_206D_200B_200E_200C_202D_202E(IEnumerator P_0) { return P_0.MoveNext(); } static void _206F_206B_206A_202C_200F_200D_206D_200B_202B_206A_202E_202E_200E_200C_200F_206C_202E_202E_206A_202B_200E_206A_206D_202E_206C_202A_206B_200D_202C_206B_202C_202C_202C_200D_206E_202B_202E_200E_206F_206B_202E(IDisposable P_0) { P_0.Dispose(); } static void _206D_206B_200C_206E_202E_200B_206B_202C_206A_202A_202E_200C_206A_200E_206C_202A_200B_206C_202B_202B_206C_206D_202D_206A_202D_206D_202B_206E_200B_206B_200B_206A_206D_200B_206C_206D_206A_200E_202B_206B_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogDebug(P_1, P_2); } }