private static void OverrideMissionEscapeMenu(bool returnDefault = false) { if (returnDefault) { OverrideView(typeof(MissionOptionsUIHandler), typeof(MissionGauntletOptionsUIHandler)); } else { var types = AppDomain.CurrentDomain.GetAssemblies() .Where(a => !a.IsDynamic) .SelectMany(a => a.GetTypes()) .Where(t => ReflectionUtils.ImplementsOrImplementsEquivalent(t, typeof(IOptionsWithMCMOptionsMissionView))); var latestImplementation = VersionUtils.GetLastImplementation(ApplicationVersionUtils.GameVersion(), types); if (latestImplementation != null) { OverrideView(typeof(MissionOptionsUIHandler), latestImplementation?.Type !); } } }
public VersionAttribute(string gameVersion, int implementationVersion) { GameVersion = ApplicationVersionUtils.TryParse(gameVersion, out var v) ? v : default; ImplementationVersion = implementationVersion; }