Files
tbd-station-14/Content.Client/Launcher/LauncherConnecting.cs
David 691ca31b95 (Cleanup) Fix logger obsolete warnings (#40553)
* Switched obsolete logger usages to use Sawmill

Fix the majority of obsolete logger usages outside the engine code.

* Fix injection in ChatManager and revert BuildMech changes

* Removed extra manual injection

* Reduced extra static injection and reverted changes to CommandButton as it needs engine changes.

* Removed two more cases of double injection and an extra using

* Reverted changes for Inventory Display

* Moved sawmill setup outside constructor in Table to resolve test failure
2025-10-07 11:45:01 +00:00

150 lines
4.7 KiB
C#

using System;
using Robust.Client;
using Robust.Client.UserInterface;
using Robust.Shared.Configuration;
using Robust.Shared.IoC;
using Robust.Shared.Log;
using Robust.Shared.Network;
using Robust.Shared.Prototypes;
using Robust.Shared.Random;
namespace Content.Client.Launcher
{
public sealed class LauncherConnecting : Robust.Client.State.State
{
[Dependency] private readonly IUserInterfaceManager _userInterfaceManager = default!;
[Dependency] private readonly IClientNetManager _clientNetManager = default!;
[Dependency] private readonly IGameController _gameController = default!;
[Dependency] private readonly IBaseClient _baseClient = default!;
[Dependency] private readonly IRobustRandom _random = default!;
[Dependency] private readonly IPrototypeManager _prototypeManager = default!;
[Dependency] private readonly IConfigurationManager _cfg = default!;
[Dependency] private readonly IClipboardManager _clipboard = default!;
[Dependency] private readonly ILogManager _logManager = default!;
private ISawmill _sawmill = default!;
private LauncherConnectingGui? _control;
private Page _currentPage;
private string? _connectFailReason;
public string? Address => _gameController.LaunchState.Ss14Address ?? _gameController.LaunchState.ConnectAddress;
public string? ConnectFailReason
{
get => _connectFailReason;
private set
{
_connectFailReason = value;
ConnectFailReasonChanged?.Invoke(value);
}
}
public string? LastDisconnectReason => _baseClient.LastDisconnectReason;
public Page CurrentPage
{
get => _currentPage;
private set
{
_currentPage = value;
PageChanged?.Invoke(value);
}
}
public ClientConnectionState ConnectionState => _clientNetManager.ClientConnectState;
public event Action<Page>? PageChanged;
public event Action<string?>? ConnectFailReasonChanged;
public event Action<ClientConnectionState>? ConnectionStateChanged;
public event Action<NetConnectFailArgs>? ConnectFailed;
protected override void Startup()
{
_sawmill = _logManager.GetSawmill("launcher-ui");
_control = new LauncherConnectingGui(this, _random, _prototypeManager, _cfg, _clipboard);
_userInterfaceManager.StateRoot.AddChild(_control);
_clientNetManager.ConnectFailed += OnConnectFailed;
_clientNetManager.ClientConnectStateChanged += OnConnectStateChanged;
CurrentPage = Page.Connecting;
}
protected override void Shutdown()
{
_control?.Dispose();
_clientNetManager.ConnectFailed -= OnConnectFailed;
_clientNetManager.ClientConnectStateChanged -= OnConnectStateChanged;
}
private void OnConnectFailed(object? _, NetConnectFailArgs args)
{
if (args.RedialFlag)
{
// We've just *attempted* to connect and we've been told we need to redial, so do it.
// Result deliberately discarded.
Redial();
}
ConnectFailReason = args.Reason;
CurrentPage = Page.ConnectFailed;
ConnectFailed?.Invoke(args);
}
private void OnConnectStateChanged(ClientConnectionState state)
{
ConnectionStateChanged?.Invoke(state);
}
public void RetryConnect()
{
if (_gameController.LaunchState.ConnectEndpoint != null)
{
_baseClient.ConnectToServer(_gameController.LaunchState.ConnectEndpoint);
CurrentPage = Page.Connecting;
}
}
public bool Redial()
{
try
{
if (_gameController.LaunchState.Ss14Address != null)
{
_gameController.Redial(_gameController.LaunchState.Ss14Address);
return true;
}
else
{
_sawmill.Info($"Redial not possible, no Ss14Address");
}
}
catch (Exception ex)
{
_sawmill.Error($"Redial exception: {ex}");
}
return false;
}
public void Exit()
{
_gameController.Shutdown("Exit button pressed");
}
public void SetDisconnected()
{
CurrentPage = Page.Disconnected;
}
public enum Page : byte
{
Connecting,
ConnectFailed,
Disconnected,
}
}
}