0
0
mirror of https://github.com/sp-tarkov/modules.git synced 2025-02-13 06:50:44 -05:00
modules/project/Aki.Reflection/Utils/PatchConstants.cs
2023-03-03 18:52:31 +00:00

50 lines
2.0 KiB
C#

using System;
using System.Linq;
using System.Reflection;
using Comfort.Common;
using EFT;
using FilesChecker;
namespace Aki.Reflection.Utils
{
public static class PatchConstants
{
public static BindingFlags PrivateFlags { get; private set; }
public static BindingFlags PublicFlags { get; private set; }
public static Type[] EftTypes { get; private set; }
public static Type[] FilesCheckerTypes { get; private set; }
public static Type LocalGameType { get; private set; }
public static Type ExfilPointManagerType { get; private set; }
public static Type SessionInterfaceType { get; private set; }
public static Type BackendSessionInterfaceType { get; private set; }
private static ISession _backEndSession;
public static ISession BackEndSession
{
get
{
if (_backEndSession == null)
{
_backEndSession = Singleton<ClientApplication<ISession>>.Instance.GetClientBackEndSession();
}
return _backEndSession;
}
}
static PatchConstants()
{
_ = nameof(ISession.GetPhpSessionId);
PrivateFlags = BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.DeclaredOnly;
PublicFlags = BindingFlags.Public | BindingFlags.Instance;
EftTypes = typeof(AbstractGame).Assembly.GetTypes();
FilesCheckerTypes = typeof(ICheckResult).Assembly.GetTypes();
LocalGameType = EftTypes.Single(x => x.Name == "LocalGame");
ExfilPointManagerType = EftTypes.Single(x => x.GetMethod("InitAllExfiltrationPoints") != null);
SessionInterfaceType = EftTypes.Single(x => x.GetMethods().Select(y => y.Name).Contains("GetPhpSessionId") && x.IsInterface);
BackendSessionInterfaceType = EftTypes.Single(x => x.GetMethods().Select(y => y.Name).Contains("ChangeProfileStatus") && x.IsInterface);
}
}
}