RMafia/MafiaClient/App.axaml.cs

65 lines
2.0 KiB
C#

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);
}
}
}