using Avalonia; using Avalonia.Controls.ApplicationLifetimes; using Avalonia.Markup.Xaml; using DiscordRPC; using DiscordRPC.Logging; using DiscordRPC.Message; namespace MafiaClient { public class App : Application { public override void Initialize() { Instance = this; AvaloniaXamlLoader.Load(this); } public override void OnFrameworkInitializationCompleted() { if (ApplicationLifetime is IClassicDesktopStyleApplicationLifetime desktop) { _rpcClient = new DiscordRpcClient("800016130097152000", autoEvents: true); _rpcClient.RegisterUriScheme(); _rpcClient.Logger = new ConsoleLogger() { Level = LogLevel.Warning }; _rpcClient.OnJoinRequested += RpcClientOnOnJoinRequested; _rpcClient.OnJoin += RpcClientOnOnJoin; _rpcClient.SetSubscription(EventType.Join | EventType.JoinRequest); _rpcClient.Initialize(); _rpcClient.SetPresence(new RichPresence() { State = "Запуск игры..." }); desktop.MainWindow = new MainWindow(); Settings.Initialize(); Settings.Save(); } base.OnFrameworkInitializationCompleted(); } public static App Instance; private DiscordRpcClient _rpcClient; public ServerConnection Connection; public DiscordRpcClient GetRpcClient() { return _rpcClient; } private void RpcClientOnOnJoin(object sender, JoinMessage args) { string secret = args.Secret; Connection = new ServerConnection(secret.Replace("/join", "")); } private void RpcClientOnOnJoinRequested(object sender, JoinRequestMessage args) { _rpcClient.Respond(args, true); } } }