using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Numerics; using System.Runtime.CompilerServices; using Microsoft.Extensions.Logging; using Questionable.Controller.Steps; using Questionable.Controller.Steps.Common; using Questionable.Controller.Steps.Movement; using Questionable.Controller.Steps.Shared; using SmartNav; namespace Questionable.Navigation; internal sealed class SmartNavReRouteService(ReRoutePolicy reRoutePolicy, SmartNavTaskMapper taskMapper, Configuration configuration, ILogger logger) { public void SetDestination(uint territoryId, Vector3 position) { _202A_200D_200E_206F_202C_206E_200D_202E_202C_200D_200C_206C_202A_200C_206B_206A_202A_202E_206A_206F_200D_206E_206B_200C_202D_206A_206C_206D_206A_202E_206A_202B_200D_202E_206D_206E_202A_202E_202C_206E_202E(reRoutePolicy, territoryId, position); } public void ClearDestination() { _206E_200E_202B_200E_200B_200B_200D_200C_202C_202B_202A_200D_202B_206A_200D_206E_206F_200D_206D_206F_200C_202B_206E_206E_206E_206F_206F_206D_206A_202B_202A_202B_200C_202D_202E_202D_206F_200C_206E_206B_202E(reRoutePolicy); } [MethodImpl(MethodImplOptions.NoInlining)] public bool HandleMovementFailure(TaskQueue taskQueue) { int num = (configuration.Navigation.ReRouteOnFailure ? 1710893574 : 1710893572); ReRouteDecision reRouteDecision = default(ReRouteDecision); List list = default(List); string routeTargetNodeId = default(string); MoveTask moveTask = default(MoveTask); string text = default(string); string text2 = default(string); while (true) { int num2 = num; int num3 = 1710893573; int num4 = num2; switch ((num4 | num3) - (num4 & num3)) { case 4: { if (!(reRouteDecision is ReRouteDecision.Replan replan)) { num = 1710893570; break; } taskQueue.Reset(); IEnumerator enumerator2 = taskMapper.MapInstructions(_206F_206E_200E_202C_202E_202C_202A_202B_202D_200E_200D_202B_200C_200D_200F_206B_200D_206B_202A_202C_206D_202E_202B_206B_200E_200E_206C_206F_200F_200D_202A_200E_206F_206E_202A_200E_206F_206D_206D_200F_202E(replan)).GetEnumerator(); try { num = 82705300; while (true) { int num6 = num; num3 = 82705303; num4 = num6; switch ((num4 | num3) - (num4 & num3)) { case 3: num = (_200D_206F_200C_202D_202C_202C_202C_200D_206C_202C_202A_206A_206F_202B_200D_202C_206B_200E_206C_200B_200D_200D_200D_202A_202E_202C_206B_200C_206C_202B_202C_206E_206F_202C_200D_200C_206F_202D_202D_200E_202E((IEnumerator)enumerator2) ? 82705302 : 82705303); break; case 1: { ITask current2 = enumerator2.Current; taskQueue.Enqueue(current2); num = 82705300; break; } case 2: num = 82705300; break; case 0: goto end_IL_026e; } continue; end_IL_026e: break; } } finally { num = ((enumerator2 == null) ? 1773046636 : 1773046637); while (true) { int num7 = num; num3 = 1773046636; num4 = num7; switch ((num4 | num3) - (num4 & num3)) { case 2: num = 1773046637; break; case 0: goto end_IL_030f; case 1: _206E_202B_200E_206F_202B_202E_202D_206C_206F_200D_202E_206E_200D_200B_200B_200B_206F_200D_200B_206E_202E_202A_202E_206D_202E_206D_206D_200B_200C_206C_202D_200D_206A_206C_206D_200C_202E_202C_202B_200F_202E((IDisposable)enumerator2); num = 1773046636; break; } continue; end_IL_030f: break; } } using (List.Enumerator enumerator = list.GetEnumerator()) { num = -1421091636; while (true) { int num8 = num; num3 = -1421091636; num4 = num8; switch ((num4 | num3) - (num4 & num3)) { case 0: num = (enumerator.MoveNext() ? (-1421091635) : (-1421091634)); break; case 1: { ITask current3 = enumerator.Current; taskQueue.Enqueue(current3); num = -1421091636; break; } case 3: num = -1421091636; break; case 2: goto end_IL_0370; } continue; end_IL_0370: break; } } return true; } case 6: routeTargetNodeId = moveTask.RouteTargetNodeId; num = ((routeTargetNodeId == null) ? 1710893575 : 1710893573); break; case 1: return false; case 0: text = routeTargetNodeId; text2 = moveTask.RouteApproachNodeId; num = 1710893575; break; case 8: num = 1710893572; break; case 3: text = null; text2 = null; moveTask = taskQueue.CurrentTaskExecutor?.CurrentTask as MoveTask; num = (((object)moveTask == null) ? 1710893575 : 1710893571); break; case 2: list = ExtractNonMovementTasks(taskQueue); reRouteDecision = _202A_206C_202A_200F_202D_200E_206B_202C_200D_200D_206C_206D_202C_202C_200B_200D_202E_202C_202C_202E_200E_206D_206A_206E_206F_200D_206E_200B_202E_202B_200E_200B_200D_200B_206D_206D_200D_206B_206F_206C_202E(reRoutePolicy, text, text2, list.Count > 0); num = ((reRouteDecision is ReRouteDecision.SkipMovement) ? 1710893568 : 1710893569); break; case 5: { taskQueue.Reset(); using (List.Enumerator enumerator = list.GetEnumerator()) { num = -1903368627; while (true) { int num5 = num; num3 = -1903368628; num4 = num5; switch ((num4 | num3) - (num4 & num3)) { case 1: num = (enumerator.MoveNext() ? (-1903368625) : (-1903368626)); break; case 3: { ITask current = enumerator.Current; taskQueue.Enqueue(current); num = -1903368627; break; } case 0: num = -1903368627; break; case 2: goto end_IL_0186; } continue; end_IL_0186: break; } } _200E_200C_202D_206D_206E_206D_202D_202E_206F_200F_206F_200B_206B_206D_202C_206B_202C_206B_202D_206F_206B_206D_206F_200D_206E_206E_206C_202C_200E_202B_202B_206C_200B_202B_206A_202C_200D_202D_202B_202C_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(563060847), new object[1] { list.Count }); return true; } case 7: return false; } } } private static List ExtractNonMovementTasks(TaskQueue taskQueue) { return taskQueue.RemainingTasks.Where((ITask t) => !IsMovementTask(t)).ToList(); } private static bool IsMovementTask(ITask task) { int num = ((task is MoveTask) ? (-89420229) : (-89420235)); bool result = default(bool); while (true) { int num2 = num; int num3 = -89420240; int num4 = num2; int num5 = num4 + num3; int num6 = num4 & num3; switch (num5 - (num6 + num6)) { case 4: num = ((task is TaxiInteract.Task) ? (-89420229) : (-89420238)); break; case 11: result = true; num = -89420230; break; case 6: num = ((task is WaitCondition.Task) ? (-89420229) : (-89420228)); break; case 13: num = ((task is AethernetRide.Task) ? (-89420229) : (-89420239)); break; case 12: num = ((task is WarpInteract.Task) ? (-89420229) : (-89420236)); break; case 9: result = false; num = -89420230; break; case 7: num = ((task is Mount.MountTask) ? (-89420229) : (-89420237)); break; case 8: num = -89420235; break; case 3: num = ((task is AetheryteTeleport.Task) ? (-89420229) : (-89420227)); break; case 2: num = ((task is SubRegionTransport.Task) ? (-89420229) : (-89420240)); break; case 1: num = ((task is WaitNavmesh.Task) ? (-89420229) : (-89420234)); break; case 0: num = ((!(task is TicketTeleport.Task)) ? (-89420231) : (-89420229)); break; case 10: return result; case 5: num = ((task is LandTask) ? (-89420229) : (-89420233)); break; } } } static void _202A_200D_200E_206F_202C_206E_200D_202E_202C_200D_200C_206C_202A_200C_206B_206A_202A_202E_206A_206F_200D_206E_206B_200C_202D_206A_206C_206D_206A_202E_206A_202B_200D_202E_206D_206E_202A_202E_202C_206E_202E(ReRoutePolicy P_0, uint P_1, Vector3 P_2) { P_0.SetDestination(P_1, P_2); } static void _206E_200E_202B_200E_200B_200B_200D_200C_202C_202B_202A_200D_202B_206A_200D_206E_206F_200D_206D_206F_200C_202B_206E_206E_206E_206F_206F_206D_206A_202B_202A_202B_200C_202D_202E_202D_206F_200C_206E_206B_202E(ReRoutePolicy P_0) { P_0.ClearDestination(); } static ReRouteDecision _202A_206C_202A_200F_202D_200E_206B_202C_200D_200D_206C_206D_202C_202C_200B_200D_202E_202C_202C_202E_200E_206D_206A_206E_206F_200D_206E_200B_202E_202B_200E_200B_200D_200B_206D_206D_200D_206B_206F_206C_202E(ReRoutePolicy P_0, string P_1, string P_2, bool P_3) { return P_0.HandleMovementFailure(P_1, P_2, P_3); } static void _200E_200C_202D_206D_206E_206D_202D_202E_206F_200F_206F_200B_206B_206D_202C_206B_202C_206B_202D_206F_206B_206D_206F_200D_206E_206E_206C_202C_200E_202B_202B_206C_200B_202B_206A_202C_200D_202D_202B_202C_202E(ILogger P_0, string P_1, object[] P_2) { P_0.LogInformation(P_1, P_2); } static IReadOnlyList _206F_206E_200E_202C_202E_202C_202A_202B_202D_200E_200D_202B_200C_200D_200F_206B_200D_206B_202A_202C_206D_202E_202B_206B_200E_200E_206C_206F_200F_200D_202A_200E_206F_206E_202A_200E_206F_206D_206D_200F_202E(ReRouteDecision.Replan P_0) { return P_0.Instructions; } static bool _200D_206F_200C_202D_202C_202C_202C_200D_206C_202C_202A_206A_206F_202B_200D_202C_206B_200E_206C_200B_200D_200D_200D_202A_202E_202C_206B_200C_206C_202B_202C_206E_206F_202C_200D_200C_206F_202D_202D_200E_202E(IEnumerator P_0) { return P_0.MoveNext(); } static void _206E_202B_200E_206F_202B_202E_202D_206C_206F_200D_202E_206E_200D_200B_200B_200B_206F_200D_200B_206E_202E_202A_202E_206D_202E_206D_206D_200B_200C_206C_202D_200D_206A_206C_206D_200C_202E_202C_202B_200F_202E(IDisposable P_0) { P_0.Dispose(); } }