-
Notifications
You must be signed in to change notification settings - Fork 2
/
Initiator.cs
93 lines (81 loc) · 3.49 KB
/
Initiator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
using RadiantConnect.EventHandler;
using RadiantConnect.Methods;
using RadiantConnect.Services;
using RadiantConnect.Network;
using RadiantConnect.Network.ChatEndpoints;
using RadiantConnect.Network.ContractEndpoints;
using RadiantConnect.Network.CurrentGameEndpoints;
using RadiantConnect.Network.LocalEndpoints;
using RadiantConnect.Network.PartyEndpoints;
using RadiantConnect.Network.PreGameEndpoints;
using RadiantConnect.Network.PVPEndpoints;
using RadiantConnect.Network.StoreEndpoints;
using System.Diagnostics;
using RadiantConnect.Authentication.DriverRiotAuth.Records;
namespace RadiantConnect
{
public record InternalSystem(
ValorantService ValorantClient,
ValorantNet Net,
LogService LogService,
LogService.ClientData ClientData
);
public record Endpoints(
ChatEndpoints ChatEndpoints,
ContractEndpoints ContractEndpoints,
CurrentGameEndpoints CurrentGameEndpoints,
LocalEndpoints LocalEndpoints,
PartyEndpoints PartyEndpoints,
PreGameEndpoints PreGameEndpoints,
PVPEndpoints PvpEndpoints,
StoreEndpoints StoreEndpoints
);
public class Initiator
{
internal static bool ClientIsReady() =>
InternalValorantMethods.IsValorantProcessRunning() &&
Directory.Exists(Path.GetDirectoryName(LogService.GetLogPath())) &&
File.Exists(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.UserProfile), "AppData",
"Local", "Riot Games", "Riot Client", "Config", "lockfile")) &&
File.Exists(LogService.GetLogPath()) &&
!LogService.GetLogText().Split('\n').Last().Contains("Log file closed");
internal static string IsVpnDetected() => string.Join('|', Process.GetProcesses().Where(process => process.ProcessName.Contains("vpn", StringComparison.CurrentCultureIgnoreCase)));
public InternalSystem ExternalSystem { get; }
public Endpoints Endpoints { get; }
public GameEvents GameEvents { get; set; } = null!;
public LogService.ClientData Client { get; }
public Initiator(bool ignoreVpn = true, RadiantConnectRSO? suppliedAuth = null)
{
while (!ClientIsReady() && suppliedAuth == null)
{
Debug.WriteLine("[INITIATOR] Waiting For Client...");
Task.Delay(2000);
}
ValorantService client = new();
LogService logService = new();
LogService.ClientData cData = LogService.GetClientData();
ValorantNet net = new(client, suppliedAuth);
string vpnDetected = IsVpnDetected();
if (!string.IsNullOrEmpty(vpnDetected) && !ignoreVpn)
throw new RadiantConnectException($"Can not run with VPN running, found processes: {vpnDetected}. \n\nTo bypass this check launch Initiator with (true)");
ExternalSystem = new InternalSystem(
client,
net,
logService,
cData
);
Client = cData;
Endpoints = new Endpoints(
new ChatEndpoints(this),
new ContractEndpoints(this),
new CurrentGameEndpoints(this),
new LocalEndpoints(this),
new PartyEndpoints(this),
new PreGameEndpoints(this),
new PVPEndpoints(this),
new StoreEndpoints(this)
);
_ = LogService.InitiateEvents(this);
}
}
}