muffin v7.5.6
This commit is contained in:
parent
6266f9e6b7
commit
addf2d530f
619 changed files with 264792 additions and 446022 deletions
|
|
@ -1,6 +1,11 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Threading;
|
||||
using Dalamud.Game.Addon.Lifecycle;
|
||||
using Dalamud.Game.Addon.Lifecycle.AddonArgTypes;
|
||||
using Dalamud.Game.ClientState.Conditions;
|
||||
using Dalamud.Game.NativeWrapper;
|
||||
using Dalamud.Plugin.Services;
|
||||
using FFXIVClientStructs.FFXIV.Component.GUI;
|
||||
using Microsoft.Extensions.Logging;
|
||||
|
|
@ -9,6 +14,84 @@ namespace Questionable.Controller.GameUi;
|
|||
|
||||
internal sealed class CreditsController : IDisposable
|
||||
{
|
||||
[CompilerGenerated]
|
||||
private sealed class _003C_003Ec__DisplayClass23_0
|
||||
{
|
||||
public CreditsController _003C_003E4__this;
|
||||
|
||||
public AddonArgs args;
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
internal unsafe void _003CCreditScrollPostSetup_003Eb__0()
|
||||
{
|
||||
_202C_202D_202B_206B_200E_200F_200E_206B_206A_206D_206B_200B_200F_202E_206C_206F_202C_206C_206E_200D_202B_206A_206D_202B_202D_206D_206C_202E_202C_200E_200F_202D_206B_202C_202B_206B_202E_200F_206F_202E((ILogger)_003C_003E4__this._logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1595844089), Array.Empty<object>());
|
||||
AtkUnitBase* address = (AtkUnitBase*)_202C_200E_200E_202A_206A_200C_202B_206F_206C_206F_200C_206F_206E_200C_200D_202C_202C_206F_202A_206C_202C_202A_202B_200E_206E_200F_202C_206E_202B_206B_202A_200C_200D_200C_206C_202A_200D_202E_200D_206B_202E(args).Address;
|
||||
address->FireCallbackInt(-2);
|
||||
}
|
||||
|
||||
static void _202C_202D_202B_206B_200E_200F_200E_206B_206A_206D_206B_200B_200F_202E_206C_206F_202C_206C_206E_200D_202B_206A_206D_202B_202D_206D_206C_202E_202C_200E_200F_202D_206B_202C_202B_206B_202E_200F_206F_202E(ILogger P_0, string P_1, object[] P_2)
|
||||
{
|
||||
P_0.LogDebug(P_1, P_2);
|
||||
}
|
||||
|
||||
static AtkUnitBasePtr _202C_200E_200E_202A_206A_200C_202B_206F_206C_206F_200C_206F_206E_200C_200D_202C_202C_206F_202A_206C_202C_202A_202B_200E_206E_200F_202C_206E_202B_206B_202A_200C_200D_200C_206C_202A_200D_202E_200D_206B_202E(AddonArgs P_0)
|
||||
{
|
||||
return P_0.Addon;
|
||||
}
|
||||
}
|
||||
|
||||
[CompilerGenerated]
|
||||
private sealed class _003C_003Ec__DisplayClass24_0
|
||||
{
|
||||
public CreditsController _003C_003E4__this;
|
||||
|
||||
public AddonArgs args;
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
internal unsafe void _003CCreditPostSetup_003Eb__0()
|
||||
{
|
||||
_206F_202B_200E_206B_200F_206B_206D_202E_200B_202C_202C_206E_200C_202D_202D_200B_202B_200E_202C_206B_206D_200D_200D_202C_200F_200C_200E_202C_206F_206B_200B_202D_200E_202B_206E_202A_200F_200D_200C_202E((ILogger)_003C_003E4__this._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<string>(-1464866894), Array.Empty<object>());
|
||||
AtkUnitBase* address = (AtkUnitBase*)_202E_206A_206F_206F_200D_200D_202B_206B_206F_200D_202E_202E_202C_202A_202C_202E_206A_206D_206D_206D_206D_200E_202B_200D_200B_200F_206F_202D_202B_206E_200F_206E_206A_206A_200E_200B_202D_206A_202C_202C_202E(args).Address;
|
||||
address->FireCallbackInt(-2);
|
||||
}
|
||||
|
||||
static void _206F_202B_200E_206B_200F_206B_206D_202E_200B_202C_202C_206E_200C_202D_202D_200B_202B_200E_202C_206B_206D_200D_200D_202C_200F_200C_200E_202C_206F_206B_200B_202D_200E_202B_206E_202A_200F_200D_200C_202E(ILogger P_0, string P_1, object[] P_2)
|
||||
{
|
||||
P_0.LogDebug(P_1, P_2);
|
||||
}
|
||||
|
||||
static AtkUnitBasePtr _202E_206A_206F_206F_200D_200D_202B_206B_206F_200D_202E_202E_202C_202A_202C_202E_206A_206D_206D_206D_206D_200E_202B_200D_200B_200F_206F_202D_202B_206E_200F_206E_206A_206A_200E_200B_202D_206A_202C_202C_202E(AddonArgs P_0)
|
||||
{
|
||||
return P_0.Addon;
|
||||
}
|
||||
}
|
||||
|
||||
[CompilerGenerated]
|
||||
private sealed class _003C_003Ec__DisplayClass25_0
|
||||
{
|
||||
public CreditsController _003C_003E4__this;
|
||||
|
||||
public AddonArgs args;
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
internal unsafe void _003CCreditPlayerPostSetup_003Eb__0()
|
||||
{
|
||||
_200C_206E_200C_200D_202D_202C_206C_200B_200C_206B_202B_200B_202A_206B_202C_206B_202A_206F_206E_206B_200E_202A_200E_200E_200C_202D_202A_202B_200E_202A_200C_200C_206D_200C_202D_200F_200F_202D_206B_202A_202E((ILogger)_003C_003E4__this._logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(586600745), Array.Empty<object>());
|
||||
AtkUnitBase* address = (AtkUnitBase*)_200D_200B_202D_202A_200B_200F_200B_206F_206C_202C_202C_206E_206D_206E_200D_200D_200F_206A_202C_206B_206A_202A_200F_202A_206C_206E_206E_202D_202B_206B_202A_202B_200B_200D_206A_202D_200D_206B_202E_202E(args).Address;
|
||||
address->Close(fireCallback: true);
|
||||
}
|
||||
|
||||
static void _200C_206E_200C_200D_202D_202C_206C_200B_200C_206B_202B_200B_202A_206B_202C_206B_202A_206F_206E_206B_200E_202A_200E_200E_200C_202D_202A_202B_200E_202A_200C_200C_206D_200C_202D_200F_200F_202D_206B_202A_202E(ILogger P_0, string P_1, object[] P_2)
|
||||
{
|
||||
P_0.LogDebug(P_1, P_2);
|
||||
}
|
||||
|
||||
static AtkUnitBasePtr _200D_200B_202D_202A_200B_200F_200B_206F_206C_202C_202C_206E_206D_206E_200D_200D_200F_206A_202C_206B_206A_202A_200F_202A_206C_206E_206E_202D_202B_206B_202A_202B_200B_200D_206A_202D_200D_206B_202E_202E(AddonArgs P_0)
|
||||
{
|
||||
return P_0.Addon;
|
||||
}
|
||||
}
|
||||
|
||||
private static CreditsController? _instance;
|
||||
|
||||
private static IAddonLifecycle? _registeredLifecycle;
|
||||
|
|
@ -28,11 +111,11 @@ internal sealed class CreditsController : IDisposable
|
|||
_instance?.CreditPlayerPostSetup(t, a);
|
||||
};
|
||||
|
||||
private static readonly string[] CreditScrollArray = new string[1] { "CreditScroll" };
|
||||
private static readonly string[] CreditScrollArray = new string[1] { global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1480537905) };
|
||||
|
||||
private static readonly string[] CreditArray = new string[1] { "Credit" };
|
||||
private static readonly string[] CreditArray = new string[1] { 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<string>(-1278080404) };
|
||||
|
||||
private static readonly string[] CreditPlayerArray = new string[1] { "CreditPlayer" };
|
||||
private static readonly string[] CreditPlayerArray = new string[1] { global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(1133859703) };
|
||||
|
||||
private static bool _deferDisposeUntilCutsceneEnds;
|
||||
|
||||
|
|
@ -42,211 +125,574 @@ internal sealed class CreditsController : IDisposable
|
|||
|
||||
private static int _maxConsecutiveSkips = 5;
|
||||
|
||||
private static DateTime _lastHandledAt = DateTime.MinValue;
|
||||
private static long? _lastHandledAt;
|
||||
|
||||
private static readonly TimeSpan _reentrancySuppress = TimeSpan.FromMilliseconds(500L);
|
||||
private const long ReentrancySuppressMs = 500L;
|
||||
|
||||
private static long _lastHandledAddr;
|
||||
|
||||
private static readonly TimeSpan _consecutiveResetWindow = TimeSpan.FromSeconds(10L);
|
||||
private const long ConsecutiveResetWindowMs = 10000L;
|
||||
|
||||
private readonly IAddonLifecycle _addonLifecycle;
|
||||
|
||||
private readonly Configuration _configuration;
|
||||
|
||||
private readonly ICondition _condition;
|
||||
|
||||
private readonly ILogger<CreditsController> _logger;
|
||||
|
||||
private static readonly object _lock = new object();
|
||||
private static readonly object _lock = _202A_206C_206F_202E_200B_206A_206D_202C_202B_200E_200E_206E_206B_202D_206B_206E_200D_202A_202C_206B_206A_202D_200C_206D_202E_200F_202A_206B_200E_206E_202C_200F_200D_202C_206A_200E_206C_206B_202A_206D_202E();
|
||||
|
||||
public CreditsController(IAddonLifecycle addonLifecycle, Configuration configuration, ILogger<CreditsController> logger)
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public CreditsController(IAddonLifecycle addonLifecycle, Configuration configuration, ICondition condition, ILogger<CreditsController> logger)
|
||||
{
|
||||
_addonLifecycle = addonLifecycle;
|
||||
_configuration = configuration;
|
||||
_condition = condition;
|
||||
_logger = logger;
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
|
||||
if (_instance == null)
|
||||
{
|
||||
_instance = this;
|
||||
_registeredLifecycle = _addonLifecycle;
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
|
||||
_addonLifecycle.RegisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
|
||||
_200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(_addonLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditScrollArray, _creditScrollHandler);
|
||||
_200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(_addonLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditArray, _creditHandler);
|
||||
_200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(_addonLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditPlayerArray, _creditPlayerHandler);
|
||||
_202D_200E_206B_200C_206D_200C_202C_206E_200E_206C_206C_200F_206D_206C_206B_202E_202B_206F_200F_206D_206B_206F_200B_200D_206E_200F_200C_202A_202B_200F_202D_200E_202E_206B_202C_206C_206F_200B_206B_202C_202E(_condition, (ICondition.ConditionChangeDelegate)OnConditionChange);
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1181221171), new object[1] { _maxConsecutiveSkips });
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
if (flag)
|
||||
{
|
||||
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void OnConditionChange(ConditionFlag flag, bool value)
|
||||
{
|
||||
int num = ((flag == ConditionFlag.OccupiedInCutSceneEvent) ? 186472363 : 186472362);
|
||||
bool flag2 = default(bool);
|
||||
while (true)
|
||||
{
|
||||
int num2 = num;
|
||||
int num3 = 186472361;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 10:
|
||||
num = 186472362;
|
||||
break;
|
||||
case 0:
|
||||
num = ((!value) ? 186472366 : 186472352);
|
||||
break;
|
||||
case 4:
|
||||
num = ((flag != ConditionFlag.WatchingCutscene78) ? 186472367 : 186472363);
|
||||
break;
|
||||
case 11:
|
||||
NotifyCutsceneEnded();
|
||||
num = 186472360;
|
||||
break;
|
||||
case 9:
|
||||
DeferDisposeUntilCutsceneEnds();
|
||||
return;
|
||||
case 12:
|
||||
num = (flag2 ? 186472361 : 186472364);
|
||||
break;
|
||||
case 6:
|
||||
flag2 = false;
|
||||
num = 186472357;
|
||||
break;
|
||||
case 2:
|
||||
flag2 = true;
|
||||
num = 186472357;
|
||||
break;
|
||||
case 5:
|
||||
return;
|
||||
case 13:
|
||||
num = (_206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(_condition, ConditionFlag.WatchingCutscene78) ? 186472360 : 186472354);
|
||||
break;
|
||||
case 8:
|
||||
num = (_206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(_condition, ConditionFlag.WatchingCutscene) ? 186472360 : 186472356);
|
||||
break;
|
||||
case 1:
|
||||
return;
|
||||
case 7:
|
||||
num = (_206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(_condition, ConditionFlag.OccupiedInCutSceneEvent) ? 186472360 : 186472353);
|
||||
break;
|
||||
case 3:
|
||||
num = ((flag == ConditionFlag.WatchingCutscene) ? 186472363 : 186472365);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private unsafe void CreditScrollPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
HandleCutscene(delegate
|
||||
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
|
||||
{
|
||||
_logger.LogInformation("CreditScrollPostSetup: attempting to close credits sequence (scroll).");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
_003C_003Ec__DisplayClass23_0._202C_202D_202B_206B_200E_200F_200E_206B_206A_206D_206B_200B_200F_202E_206C_206F_202C_206C_206E_200D_202B_206A_206D_202B_202D_206D_206C_202E_202C_200E_200F_202D_206B_202C_202B_206B_202E_200F_206F_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-1595844089), Array.Empty<object>());
|
||||
AtkUnitBase* address = (AtkUnitBase*)_003C_003Ec__DisplayClass23_0._202C_200E_200E_202A_206A_200C_202B_206F_206C_206F_200C_206F_206E_200C_200D_202C_202C_206F_202A_206C_202C_202A_202B_200E_206E_200F_202C_206E_202B_206B_202A_200C_200D_200C_206C_202A_200D_202E_200D_206B_202E(args).Address;
|
||||
address->FireCallbackInt(-2);
|
||||
}, args);
|
||||
}
|
||||
|
||||
private unsafe void CreditPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
HandleCutscene(delegate
|
||||
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
|
||||
{
|
||||
_logger.LogInformation("CreditPostSetup: attempting to close credits sequence.");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
_003C_003Ec__DisplayClass24_0._206F_202B_200E_206B_200F_206B_206D_202E_200B_202C_202C_206E_200C_202D_202D_200B_202B_200E_202C_206B_206D_200D_200D_202C_200F_200C_200E_202C_206F_206B_200B_202D_200E_202B_206E_202A_200F_200D_200C_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<string>(-1464866894), Array.Empty<object>());
|
||||
AtkUnitBase* address = (AtkUnitBase*)_003C_003Ec__DisplayClass24_0._202E_206A_206F_206F_200D_200D_202B_206B_206F_200D_202E_202E_202C_202A_202C_202E_206A_206D_206D_206D_206D_200E_202B_200D_200B_200F_206F_202D_202B_206E_200F_206E_206A_206A_200E_200B_202D_206A_202C_202C_202E(args).Address;
|
||||
address->FireCallbackInt(-2);
|
||||
}, args);
|
||||
}
|
||||
|
||||
private unsafe void CreditPlayerPostSetup(AddonEvent type, AddonArgs args)
|
||||
{
|
||||
HandleCutscene(delegate
|
||||
HandleCutscene([MethodImpl(MethodImplOptions.NoInlining)] () =>
|
||||
{
|
||||
_logger.LogInformation("CreditPlayerPostSetup: attempting to close CreditPlayer.");
|
||||
AtkUnitBase* address = (AtkUnitBase*)args.Addon.Address;
|
||||
_003C_003Ec__DisplayClass25_0._200C_206E_200C_200D_202D_202C_206C_200B_200C_206B_202B_200B_202A_206B_202C_206B_202A_206F_206E_206B_200E_202A_200E_200E_200C_202D_202A_202B_200E_202A_200C_200C_206D_200C_202D_200F_200F_202D_206B_202A_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(586600745), Array.Empty<object>());
|
||||
AtkUnitBase* address = (AtkUnitBase*)_003C_003Ec__DisplayClass25_0._200D_200B_202D_202A_200B_200F_200B_206F_206C_202C_202C_206E_206D_206E_200D_200D_200F_206A_202C_206B_206A_202A_200F_202A_206C_206E_206E_202D_202B_206B_202A_202B_200B_200D_206A_202D_200D_206B_202E_202E(args).Address;
|
||||
address->Close(fireCallback: true);
|
||||
}, args);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
private void HandleCutscene(Action nativeAction, AddonArgs args)
|
||||
{
|
||||
if (_configuration.General.CinemaMode)
|
||||
int num = ((!_configuration.General.CinemaMode) ? 1928788595 : 1928788597);
|
||||
long valueOrDefault = default(long);
|
||||
long num8 = default(long);
|
||||
while (true)
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: Cinema Mode enabled, not skipping cutscene.");
|
||||
return;
|
||||
}
|
||||
long num = ((args.Addon.Address == IntPtr.Zero) ? 0 : ((IntPtr)args.Addon.Address).ToInt64());
|
||||
if (num == 0L)
|
||||
{
|
||||
_logger.LogInformation("HandleCutscene: Addon address is zero, skipping.");
|
||||
return;
|
||||
}
|
||||
lock (_lock)
|
||||
{
|
||||
if (_lastHandledAt != DateTime.MinValue && DateTime.Now - _lastHandledAt > _consecutiveResetWindow)
|
||||
int num2 = num;
|
||||
int num3 = 1928788595;
|
||||
int num4 = num2;
|
||||
long num10;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
if (_handledConsecutiveCutscenes != 0)
|
||||
case 3:
|
||||
num = 1928788597;
|
||||
break;
|
||||
case 5:
|
||||
num10 = 0L;
|
||||
goto IL_0077;
|
||||
case 2:
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(-2015596937), Array.Empty<object>());
|
||||
return;
|
||||
case 0:
|
||||
num = ((_206A_206F_200B_206C_200C_200C_206D_200D_206D_206D_202A_206E_200F_206E_206A_206A_200F_202D_206E_202D_202D_200C_206A_206A_200F_206F_202B_200D_206B_200B_200B_206C_202C_206F_200F_206D_200B_200B_206D_202A_202E(args).Address == IntPtr.Zero) ? 1928788598 : 1928788599);
|
||||
break;
|
||||
case 4:
|
||||
num10 = ((IntPtr)_206A_206F_200B_206C_200C_200C_206D_200D_206D_206D_202A_206E_200F_206E_206A_206A_200F_202D_206E_202D_202D_200C_206A_206A_200F_206F_202B_200D_206B_200B_200B_206C_202C_206F_200F_206D_200B_200B_206D_202A_202E(args).Address).ToInt64();
|
||||
goto IL_0077;
|
||||
case 6:
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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<string>(643918301), Array.Empty<object>());
|
||||
return;
|
||||
case 1:
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: long pause detected ({Elapsed}), resetting consecutive counter (was {Was}).", DateTime.Now - _lastHandledAt, _handledConsecutiveCutscenes);
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
|
||||
long? lastHandledAt = _lastHandledAt;
|
||||
num = ((!lastHandledAt.HasValue) ? (-333719538) : (-333719537));
|
||||
while (true)
|
||||
{
|
||||
int num5 = num;
|
||||
num3 = -333719546;
|
||||
num4 = num5;
|
||||
int num6 = num4 + num3;
|
||||
int num7 = num4 & num3;
|
||||
switch (num6 - (num7 + num7))
|
||||
{
|
||||
case 5:
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
num = -333719538;
|
||||
break;
|
||||
case 4:
|
||||
num = ((_handledConsecutiveCutscenes < _maxConsecutiveSkips) ? (-333719551) : (-333719539));
|
||||
break;
|
||||
case 9:
|
||||
valueOrDefault = lastHandledAt.GetValueOrDefault();
|
||||
num = ((_206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E() - valueOrDefault <= 10000) ? (-333719538) : (-333719548));
|
||||
break;
|
||||
case 2:
|
||||
num = ((_handledConsecutiveCutscenes == 0) ? (-333719549) : (-333719547));
|
||||
break;
|
||||
case 10:
|
||||
num = ((num8 != _lastHandledAddr) ? (-333719550) : (-333719552));
|
||||
break;
|
||||
case 1:
|
||||
{
|
||||
long valueOrDefault2 = lastHandledAt.GetValueOrDefault();
|
||||
num = ((_206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E() - valueOrDefault2 >= 500) ? (-333719550) : (-333719540));
|
||||
break;
|
||||
}
|
||||
case 3:
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(1948237893), new object[2]
|
||||
{
|
||||
_206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E() - valueOrDefault,
|
||||
_handledConsecutiveCutscenes
|
||||
});
|
||||
num = -333719549;
|
||||
break;
|
||||
case 11:
|
||||
_202E_202C_200F_200D_206C_200F_206B_200D_200C_200F_202D_206E_200E_202E_206E_206C_206B_202D_206B_200E_200B_200C_200B_200B_206E_202E_202C_202C_206E_200E_200F_206B_200B_206A_200B_200B_202D_206B_202D_200D_202E((ILogger)_logger, global::_003CModule_003E._206C_202A_206D_206A_206E_202A_202B_206F_206D_200F_202D_200F_202D_206A_202C_202B_206D_206A_200E_200E_202D_202D_200D_200C_200D_200D_206D_206E_202A_200F_206E_206C_206D_206A_206D_202B_200F_200D_206E_200C_202E<string>(767914834), new object[1] { _maxConsecutiveSkips });
|
||||
return;
|
||||
case 0:
|
||||
num = -333719537;
|
||||
break;
|
||||
case 8:
|
||||
lastHandledAt = _lastHandledAt;
|
||||
num = ((!lastHandledAt.HasValue) ? (-333719550) : (-333719545));
|
||||
break;
|
||||
case 6:
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(-915129815), new object[1] { num8 });
|
||||
return;
|
||||
case 7:
|
||||
{
|
||||
_lastHandledAt = _206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E();
|
||||
_lastHandledAddr = num8;
|
||||
int handledConsecutiveCutscenes = _handledConsecutiveCutscenes;
|
||||
num3 = 1;
|
||||
num4 = handledConsecutiveCutscenes;
|
||||
_handledConsecutiveCutscenes = (num4 | num3) + (num4 & num3);
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-84388314), new object[2] { _handledConsecutiveCutscenes, num8 });
|
||||
goto end_IL_0158;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
end_IL_0158:
|
||||
break;
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
num = ((!flag) ? 1553266183 : 1553266182);
|
||||
while (true)
|
||||
{
|
||||
int num9 = num;
|
||||
num3 = 1553266183;
|
||||
num4 = num9;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 2:
|
||||
num = 1553266182;
|
||||
break;
|
||||
case 0:
|
||||
goto end_IL_03fc;
|
||||
case 1:
|
||||
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
|
||||
num = 1553266183;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
end_IL_03fc:
|
||||
break;
|
||||
}
|
||||
}
|
||||
try
|
||||
{
|
||||
nativeAction();
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._202D_206D_206A_206E_202C_202B_200C_206C_200E_206A_206D_200E_206A_202A_200C_202E_206E_202C_206F_200B_206D_206F_200C_202C_200B_202B_200F_200B_206A_206F_200F_202E_206B_200E_202B_202A_200F_200B_202A_200E_202E<string>(1887133010), new object[1] { num8 });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
_206C_206C_202C_200C_202C_206E_206E_206A_202E_200F_202D_200B_202B_200C_206D_200B_202E_206A_200E_200F_206C_206D_206F_200E_206D_206F_202C_202B_206C_202D_200B_206E_200B_202A_206A_200D_202A_202A_200D_202A_202E((ILogger)_logger, ex, 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<string>(873524230), new object[1] { num8 });
|
||||
}
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(2081767975), new object[2] { _handledConsecutiveCutscenes, _maxConsecutiveSkips });
|
||||
return;
|
||||
}
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
}
|
||||
if (DateTime.Now - _lastHandledAt < _reentrancySuppress && num == _lastHandledAddr)
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: suppressed re-entrant invocation for same addon (addr=0x{Address:X}).", num);
|
||||
return;
|
||||
}
|
||||
if (_handledConsecutiveCutscenes >= _maxConsecutiveSkips)
|
||||
{
|
||||
_logger.LogInformation("HandleCutscene: reached max consecutive skips ({MaxSkips}), unregistering listeners.", _maxConsecutiveSkips);
|
||||
TryUnregisterAndClear();
|
||||
return;
|
||||
}
|
||||
_lastHandledAt = DateTime.Now;
|
||||
_lastHandledAddr = num;
|
||||
_handledConsecutiveCutscenes++;
|
||||
_logger.LogDebug("HandleCutscene: handling cutscene #{Count} (addr=0x{Address:X}).", _handledConsecutiveCutscenes, num);
|
||||
}
|
||||
try
|
||||
{
|
||||
nativeAction();
|
||||
_logger.LogInformation("HandleCutscene: native action executed for addon at 0x{Address:X}.", num);
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
_logger.LogError(exception, "HandleCutscene: exception while executing native action for addon at 0x{Address:X}.", num);
|
||||
}
|
||||
lock (_lock)
|
||||
{
|
||||
if (_handledConsecutiveCutscenes >= _maxConsecutiveSkips && !_deferDisposeUntilCutsceneEnds)
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: max handled reached and no defer active, unregistering now.");
|
||||
TryUnregisterAndClear();
|
||||
}
|
||||
else
|
||||
{
|
||||
_logger.LogDebug("HandleCutscene: leaving listeners registered (handled {Count}/{Max}).", _handledConsecutiveCutscenes, _maxConsecutiveSkips);
|
||||
IL_0077:
|
||||
num8 = num10;
|
||||
num = ((num8 != 0L) ? 1928788594 : 1928788593);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void TryUnregisterAndClear()
|
||||
{
|
||||
if (_registeredLifecycle != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
|
||||
_logger.LogDebug("TryUnregisterAndClear: listeners unregistered successfully.");
|
||||
}
|
||||
catch (Exception exception)
|
||||
{
|
||||
_logger.LogError(exception, "TryUnregisterAndClear: exception while unregistering listeners.");
|
||||
}
|
||||
}
|
||||
_registeredLifecycle = null;
|
||||
_instance = null;
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
_lastHandledAddr = 0L;
|
||||
_lastHandledAt = DateTime.MinValue;
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public static void DeferDisposeUntilCutsceneEnds()
|
||||
{
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
|
||||
_deferDisposeUntilCutsceneEnds = true;
|
||||
if (_instance != null)
|
||||
int num = ((_instance == null) ? 1593867446 : 1593867445);
|
||||
while (true)
|
||||
{
|
||||
_instance._logger.LogDebug("CreditsController: deferring dispose until cutscene ends.");
|
||||
int num2 = num;
|
||||
int num3 = 1593867444;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
case 0:
|
||||
num = 1593867445;
|
||||
break;
|
||||
case 1:
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_instance._logger, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(-1723920399), Array.Empty<object>());
|
||||
num = 1593867446;
|
||||
break;
|
||||
case 2:
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
finally
|
||||
{
|
||||
int num = ((!flag) ? (-821324345) : (-821324348));
|
||||
while (true)
|
||||
{
|
||||
int num7 = num;
|
||||
int num3 = -821324347;
|
||||
int num4 = num7;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 2:
|
||||
goto end_IL_00b5;
|
||||
case 1:
|
||||
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
|
||||
num = -821324345;
|
||||
break;
|
||||
case 0:
|
||||
num = -821324348;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
end_IL_00b5:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public static void NotifyCutsceneEnded()
|
||||
{
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
|
||||
_deferDisposeUntilCutsceneEnds = false;
|
||||
if (_instance != null)
|
||||
int num = ((_instance == null) ? 1205296441 : 1205296446);
|
||||
while (true)
|
||||
{
|
||||
_instance._logger.LogDebug("CreditsController: cutscene ended, processing pending dispose state.");
|
||||
int num2 = num;
|
||||
int num3 = 1205296442;
|
||||
int num4 = num2;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 1:
|
||||
num = ((_instance == null) ? 1205296442 : 1205296440);
|
||||
break;
|
||||
case 3:
|
||||
num = ((!_pendingDispose) ? 1205296442 : 1205296443);
|
||||
break;
|
||||
case 4:
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_instance._logger, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(1784202689), Array.Empty<object>());
|
||||
num = 1205296441;
|
||||
break;
|
||||
case 2:
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_instance._logger, global::_003CModule_003E._200B_206B_206B_200E_200B_206A_206D_206B_206E_200F_206A_206F_206E_202B_200F_206C_202B_206D_206E_200F_200C_200E_206F_200D_200F_200B_202B_202B_202B_202B_206D_202C_206A_206D_200B_206E_200D_206A_206F_200F_202E<string>(1095714007), Array.Empty<object>());
|
||||
_instance.Dispose();
|
||||
num = 1205296442;
|
||||
break;
|
||||
case 5:
|
||||
num = 1205296446;
|
||||
break;
|
||||
case 0:
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (_pendingDispose && _instance != null)
|
||||
}
|
||||
finally
|
||||
{
|
||||
int num = ((!flag) ? (-15651437) : (-15651440));
|
||||
while (true)
|
||||
{
|
||||
_instance._logger.LogDebug("CreditsController: pending dispose detected, performing unregister now.");
|
||||
_instance.Dispose();
|
||||
int num5 = num;
|
||||
int num3 = -15651439;
|
||||
int num4 = num5;
|
||||
switch ((num4 | num3) - (num4 & num3))
|
||||
{
|
||||
case 2:
|
||||
goto end_IL_0132;
|
||||
case 1:
|
||||
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
|
||||
num = -15651437;
|
||||
break;
|
||||
case 0:
|
||||
num = -15651440;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
end_IL_0132:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.NoInlining)]
|
||||
public void Dispose()
|
||||
{
|
||||
lock (_lock)
|
||||
object obj = _lock;
|
||||
bool flag = false;
|
||||
try
|
||||
{
|
||||
if (_instance != this)
|
||||
_200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(obj, ref flag);
|
||||
int num = ((_instance == this) ? (-273121773) : (-273121772));
|
||||
while (true)
|
||||
{
|
||||
return;
|
||||
int num2 = num;
|
||||
int num3 = -273121774;
|
||||
int num4 = num2;
|
||||
int num5 = num4 + num3;
|
||||
int num6 = num4 & num3;
|
||||
switch (num5 - (num6 + num6))
|
||||
{
|
||||
case 1:
|
||||
num = ((!_deferDisposeUntilCutsceneEnds) ? (-273121776) : (-273121775));
|
||||
break;
|
||||
case 6:
|
||||
return;
|
||||
case 2:
|
||||
num = ((_registeredLifecycle == null) ? (-273121770) : (-273121774));
|
||||
break;
|
||||
case 0:
|
||||
_206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(_registeredLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditPlayerArray, _creditPlayerHandler);
|
||||
_206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(_registeredLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditArray, _creditHandler);
|
||||
_206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(_registeredLifecycle, AddonEvent.PostSetup, (IEnumerable<string>)CreditScrollArray, _creditScrollHandler);
|
||||
num = -273121770;
|
||||
break;
|
||||
case 3:
|
||||
_pendingDispose = true;
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E((ILogger)_logger, global::_003CModule_003E._202A_206B_206D_200C_206B_200E_200E_202A_200B_202E_206A_206F_206A_206B_200E_200D_200F_206D_206E_206A_206F_200C_206C_202C_202A_206E_202C_200B_206E_202A_206E_202B_206B_202E_202E_206A_206D_206D_202C_200F_202E<string>(-1915726020), Array.Empty<object>());
|
||||
return;
|
||||
case 5:
|
||||
num = -273121772;
|
||||
break;
|
||||
case 4:
|
||||
_200D_200B_206D_200E_206C_200B_206C_206D_200E_200C_200E_206E_200E_206D_206C_202C_200E_206A_206A_202E_202B_202B_202C_202C_206B_202B_206A_200B_206D_200B_200F_200D_202C_202D_202E_202B_206F_200C_206F_202B_202E(_condition, (ICondition.ConditionChangeDelegate)OnConditionChange);
|
||||
_registeredLifecycle = null;
|
||||
_instance = null;
|
||||
_pendingDispose = false;
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
_lastHandledAddr = 0L;
|
||||
_lastHandledAt = null;
|
||||
_200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_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<string>(-677486284), Array.Empty<object>());
|
||||
return;
|
||||
}
|
||||
}
|
||||
if (_deferDisposeUntilCutsceneEnds)
|
||||
}
|
||||
finally
|
||||
{
|
||||
int num = ((!flag) ? 1603499567 : 1603499564);
|
||||
while (true)
|
||||
{
|
||||
_pendingDispose = true;
|
||||
_logger.LogInformation("CreditsController.Dispose deferred until cutscene end.");
|
||||
return;
|
||||
int num7 = num;
|
||||
int num3 = 1603499566;
|
||||
int num4 = num7;
|
||||
int num8 = num4 + num3;
|
||||
int num9 = num4 & num3;
|
||||
switch (num8 - (num9 + num9))
|
||||
{
|
||||
case 0:
|
||||
num = 1603499564;
|
||||
break;
|
||||
case 1:
|
||||
goto end_IL_01bc;
|
||||
case 2:
|
||||
_200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(obj);
|
||||
num = 1603499567;
|
||||
break;
|
||||
}
|
||||
continue;
|
||||
end_IL_01bc:
|
||||
break;
|
||||
}
|
||||
if (_registeredLifecycle != null)
|
||||
{
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditPlayerArray, _creditPlayerHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditArray, _creditHandler);
|
||||
_registeredLifecycle.UnregisterListener(AddonEvent.PostSetup, CreditScrollArray, _creditScrollHandler);
|
||||
}
|
||||
_registeredLifecycle = null;
|
||||
_instance = null;
|
||||
_pendingDispose = false;
|
||||
_handledConsecutiveCutscenes = 0;
|
||||
_lastHandledAddr = 0L;
|
||||
_lastHandledAt = DateTime.MinValue;
|
||||
_logger.LogDebug("CreditsController listeners unregistered and disposed (primary instance).");
|
||||
}
|
||||
}
|
||||
|
||||
void IDisposable.Dispose()
|
||||
{
|
||||
//ILSpy generated this explicit interface implementation from .override directive in Dispose
|
||||
this.Dispose();
|
||||
}
|
||||
|
||||
static void _200B_200F_202B_200E_200D_206E_200E_206D_206F_202D_206C_200B_206E_200D_202B_206E_202C_200E_202D_200E_202D_202D_206C_202B_200D_202B_206C_202B_202C_206B_202E_202A_202E_202C_206A_206A_206E_206A_206D_202E_202E(object P_0, ref bool P_1)
|
||||
{
|
||||
Monitor.Enter(P_0, ref P_1);
|
||||
}
|
||||
|
||||
static void _200C_202A_202A_202B_202A_200F_200F_206A_206C_200F_200F_202B_206A_206F_202B_200B_200B_202C_206D_206A_202B_200F_200F_202D_202D_200B_206A_200D_200D_202C_202B_200E_200F_200F_200D_206C_206D_202D_206B_200F_202E(IAddonLifecycle P_0, AddonEvent P_1, IEnumerable<string> P_2, IAddonLifecycle.AddonEventDelegate P_3)
|
||||
{
|
||||
P_0.RegisterListener(P_1, P_2, P_3);
|
||||
}
|
||||
|
||||
static void _202D_200E_206B_200C_206D_200C_202C_206E_200E_206C_206C_200F_206D_206C_206B_202E_202B_206F_200F_206D_206B_206F_200B_200D_206E_200F_200C_202A_202B_200F_202D_200E_202E_206B_202C_206C_206F_200B_206B_202C_202E(ICondition P_0, ICondition.ConditionChangeDelegate P_1)
|
||||
{
|
||||
P_0.ConditionChange += P_1;
|
||||
}
|
||||
|
||||
static void _200C_200C_202A_206D_206F_206B_206C_206C_200D_200B_202E_202C_202C_206E_202D_200E_200C_200F_200E_206F_206E_206B_206F_206D_200F_202E_202D_202E_206C_200C_202A_206C_200D_206A_206E_206E_206B_200F_206C_200D_202E(ILogger P_0, string P_1, object[] P_2)
|
||||
{
|
||||
P_0.LogDebug(P_1, P_2);
|
||||
}
|
||||
|
||||
static void _200C_206A_200D_200F_202D_200B_206C_206B_202A_202C_202A_200B_202A_202E_206E_202B_206D_200F_206A_200C_202B_200F_200D_206F_206F_200F_200B_200C_202D_202D_206B_200C_206A_206E_200B_206D_200C_200E_206E_202E(object P_0)
|
||||
{
|
||||
Monitor.Exit(P_0);
|
||||
}
|
||||
|
||||
static bool _206F_200E_202C_206A_200D_202D_206A_202A_202A_202B_200B_202D_200B_200F_200C_206E_206E_202B_206E_200E_206E_206A_202B_206A_200E_202D_200C_206C_200E_200D_206B_206E_202A_200B_200B_200D_202E_202C_206F_202B_202E(ICondition P_0, ConditionFlag P_1)
|
||||
{
|
||||
return P_0[P_1];
|
||||
}
|
||||
|
||||
static AtkUnitBasePtr _206A_206F_200B_206C_200C_200C_206D_200D_206D_206D_202A_206E_200F_206E_206A_206A_200F_202D_206E_202D_202D_200C_206A_206A_200F_206F_202B_200D_206B_200B_200B_206C_202C_206F_200F_206D_200B_200B_206D_202A_202E(AddonArgs P_0)
|
||||
{
|
||||
return P_0.Addon;
|
||||
}
|
||||
|
||||
static long _206B_200C_206C_202E_200C_200F_200E_206E_202E_206C_206B_200F_202C_202E_200F_200B_206C_202A_200E_202C_206C_206E_206A_202D_202B_206B_202B_206E_200B_202A_206E_200B_206B_200F_202B_206A_200B_200F_206D_206F_202E()
|
||||
{
|
||||
return Environment.TickCount64;
|
||||
}
|
||||
|
||||
static void _202E_202C_200F_200D_206C_200F_206B_200D_200C_200F_202D_206E_200E_202E_206E_206C_206B_202D_206B_200E_200B_200C_200B_200B_206E_202E_202C_202C_206E_200E_200F_206B_200B_206A_200B_200B_202D_206B_202D_200D_202E(ILogger P_0, string P_1, object[] P_2)
|
||||
{
|
||||
P_0.LogInformation(P_1, P_2);
|
||||
}
|
||||
|
||||
static void _206C_206C_202C_200C_202C_206E_206E_206A_202E_200F_202D_200B_202B_200C_206D_200B_202E_206A_200E_200F_206C_206D_206F_200E_206D_206F_202C_202B_206C_202D_200B_206E_200B_202A_206A_200D_202A_202A_200D_202A_202E(ILogger P_0, Exception P_1, string P_2, object[] P_3)
|
||||
{
|
||||
P_0.LogError(P_1, P_2, P_3);
|
||||
}
|
||||
|
||||
static void _206B_200C_202E_206C_200F_206D_206F_206C_202B_206F_206A_200B_202C_206B_206D_206E_206A_202B_206F_200D_202A_206F_200B_202E_206D_202C_202E_202C_202E_202B_200D_202A_202B_202E_206C_206C_200F_202E_206B_206D_202E(IAddonLifecycle P_0, AddonEvent P_1, IEnumerable<string> P_2, IAddonLifecycle.AddonEventDelegate P_3)
|
||||
{
|
||||
P_0.UnregisterListener(P_1, P_2, P_3);
|
||||
}
|
||||
|
||||
static void _200D_200B_206D_200E_206C_200B_206C_206D_200E_200C_200E_206E_200E_206D_206C_202C_200E_206A_206A_202E_202B_202B_202C_202C_206B_202B_206A_200B_206D_200B_200F_200D_202C_202D_202E_202B_206F_200C_206F_202B_202E(ICondition P_0, ICondition.ConditionChangeDelegate P_1)
|
||||
{
|
||||
P_0.ConditionChange -= P_1;
|
||||
}
|
||||
|
||||
static object _202A_206C_206F_202E_200B_206A_206D_202C_202B_200E_200E_206E_206B_202D_206B_206E_200D_202A_202C_206B_206A_202D_200C_206D_202E_200F_202A_206B_200E_206E_202C_200F_200D_202C_206A_200E_206C_206B_202A_206D_202E()
|
||||
{
|
||||
return new object();
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue