Fix event handler leaks in LauncherConnecting

This commit is contained in:
Pieter-Jan Briers
2021-08-30 01:50:54 +02:00
parent 97584c16da
commit 9cf37b6e68

View File

@@ -52,15 +52,29 @@ namespace Content.Client.Launcher
_userInterfaceManager.StateRoot.AddChild(_control); _userInterfaceManager.StateRoot.AddChild(_control);
_clientNetManager.ConnectFailed += (_, args) => _clientNetManager.ConnectFailed += OnConnectFailed;
_clientNetManager.ClientConnectStateChanged += OnConnectStateChanged;
CurrentPage = Page.Connecting;
}
public override void Shutdown()
{
_control?.Dispose();
_clientNetManager.ConnectFailed -= OnConnectFailed;
_clientNetManager.ClientConnectStateChanged -= OnConnectStateChanged;
}
private void OnConnectFailed(object? _, NetConnectFailArgs args)
{ {
ConnectFailReason = args.Reason; ConnectFailReason = args.Reason;
CurrentPage = Page.ConnectFailed; CurrentPage = Page.ConnectFailed;
}; }
_clientNetManager.ClientConnectStateChanged += state => ConnectionStateChanged?.Invoke(state); private void OnConnectStateChanged(ClientConnectionState state)
{
CurrentPage = Page.Connecting; ConnectionStateChanged?.Invoke(state);
} }
public void RetryConnect() public void RetryConnect()
@@ -77,11 +91,6 @@ namespace Content.Client.Launcher
_gameController.Shutdown("Exit button pressed"); _gameController.Shutdown("Exit button pressed");
} }
public override void Shutdown()
{
_control?.Dispose();
}
public void SetDisconnected() public void SetDisconnected()
{ {
CurrentPage = Page.Disconnected; CurrentPage = Page.Disconnected;