mirror of
https://github.com/misternebula/quantum-space-buddies.git
synced 2025-02-11 06:40:39 +00:00
QSBNetworkManager.cs: proper transport error
This commit is contained in:
parent
38f653ef3c
commit
a89c325c88
@ -40,9 +40,6 @@ namespace EpicTransport {
|
|||||||
public ProductUserId productUserId;
|
public ProductUserId productUserId;
|
||||||
|
|
||||||
private int packetId = 0;
|
private int packetId = 0;
|
||||||
|
|
||||||
// CHANGED
|
|
||||||
public Action<string> SetTransportError;
|
|
||||||
|
|
||||||
private void Awake() {
|
private void Awake() {
|
||||||
Debug.Assert(Channels != null && Channels.Length > 0, "No channel configured for EOS Transport.");
|
Debug.Assert(Channels != null && Channels.Length > 0, "No channel configured for EOS Transport.");
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using EpicTransport;
|
using EpicTransport;
|
||||||
|
using Mirror;
|
||||||
using OWML.Common;
|
using OWML.Common;
|
||||||
using QSB.Localization;
|
using QSB.Localization;
|
||||||
using QSB.Messaging;
|
using QSB.Messaging;
|
||||||
@ -716,7 +717,7 @@ internal class MenuManager : MonoBehaviour, IAddComponentOnStart
|
|||||||
OpenInfoPopup(string.Format(QSBLocalization.Current.ServerRefusedConnection, reason), QSBLocalization.Current.OK);
|
OpenInfoPopup(string.Format(QSBLocalization.Current.ServerRefusedConnection, reason), QSBLocalization.Current.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDisconnected(string error)
|
private void OnDisconnected(TransportError error, string reason)
|
||||||
{
|
{
|
||||||
QSBCore.IsInMultiplayer = false;
|
QSBCore.IsInMultiplayer = false;
|
||||||
|
|
||||||
@ -735,7 +736,7 @@ internal class MenuManager : MonoBehaviour, IAddComponentOnStart
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
OpenInfoPopup(string.Format(QSBLocalization.Current.ClientDisconnectWithError, error), QSBLocalization.Current.OK);
|
OpenInfoPopup(string.Format(QSBLocalization.Current.ClientDisconnectWithError, reason), QSBLocalization.Current.OK);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetButtonActive(DisconnectButton, false);
|
SetButtonActive(DisconnectButton, false);
|
||||||
|
@ -45,7 +45,7 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart
|
|||||||
public new static QSBNetworkManager singleton => (QSBNetworkManager)NetworkManager.singleton;
|
public new static QSBNetworkManager singleton => (QSBNetworkManager)NetworkManager.singleton;
|
||||||
|
|
||||||
public event Action OnClientConnected;
|
public event Action OnClientConnected;
|
||||||
public event Action<string> OnClientDisconnected;
|
public event Action<TransportError, string> OnClientDisconnected;
|
||||||
|
|
||||||
public GameObject OrbPrefab { get; private set; }
|
public GameObject OrbPrefab { get; private set; }
|
||||||
public GameObject ShipPrefab { get; private set; }
|
public GameObject ShipPrefab { get; private set; }
|
||||||
@ -65,12 +65,7 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart
|
|||||||
private GameObject _probePrefab;
|
private GameObject _probePrefab;
|
||||||
private bool _everConnected;
|
private bool _everConnected;
|
||||||
|
|
||||||
private string _lastTransportError;
|
private (TransportError error, string reason) _lastTransportError;
|
||||||
private static readonly string[] _kcpErrorLogs =
|
|
||||||
{
|
|
||||||
"KcpPeer: received disconnect message",
|
|
||||||
"Failed to resolve host: .*"
|
|
||||||
};
|
|
||||||
|
|
||||||
private static kcp2k.KcpTransport _kcpTransport;
|
private static kcp2k.KcpTransport _kcpTransport;
|
||||||
private static EosTransport _eosTransport;
|
private static EosTransport _eosTransport;
|
||||||
@ -99,7 +94,6 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart
|
|||||||
eosSdkComponent.epicLoggerLevel = LogLevel.VeryVerbose;
|
eosSdkComponent.epicLoggerLevel = LogLevel.VeryVerbose;
|
||||||
|
|
||||||
_eosTransport = gameObject.AddComponent<EosTransport>();
|
_eosTransport = gameObject.AddComponent<EosTransport>();
|
||||||
_eosTransport.SetTransportError = error => _lastTransportError = error;
|
|
||||||
}
|
}
|
||||||
transport = QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport;
|
transport = QSBCore.UseKcpTransport ? _kcpTransport : _eosTransport;
|
||||||
|
|
||||||
@ -242,24 +236,14 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart
|
|||||||
networkAddress = QSBCore.DefaultServerIP;
|
networkAddress = QSBCore.DefaultServerIP;
|
||||||
|
|
||||||
{
|
{
|
||||||
kcp2k.Log.Info = s =>
|
// hack
|
||||||
|
kcp2k.Log.Info += s =>
|
||||||
{
|
{
|
||||||
DebugLog.DebugWrite("[KCP] " + s);
|
if (s == "KcpPeer: received disconnect message")
|
||||||
if (_kcpErrorLogs.Any(p => Regex.IsMatch(s, p)))
|
|
||||||
{
|
{
|
||||||
_lastTransportError = s;
|
OnClientError(TransportError.ConnectionClosed, "host disconnected");
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
kcp2k.Log.Warning = s =>
|
|
||||||
{
|
|
||||||
DebugLog.DebugWrite("[KCP] " + s, MessageType.Warning);
|
|
||||||
_lastTransportError = s;
|
|
||||||
};
|
|
||||||
kcp2k.Log.Error = s =>
|
|
||||||
{
|
|
||||||
DebugLog.DebugWrite("[KCP] " + s, MessageType.Error);
|
|
||||||
_lastTransportError = s;
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
QSBSceneManager.OnPostSceneLoad += (_, loadScene) =>
|
QSBSceneManager.OnPostSceneLoad += (_, loadScene) =>
|
||||||
@ -357,8 +341,8 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart
|
|||||||
{
|
{
|
||||||
DebugLog.DebugWrite("OnClientDisconnect");
|
DebugLog.DebugWrite("OnClientDisconnect");
|
||||||
base.OnClientDisconnect();
|
base.OnClientDisconnect();
|
||||||
OnClientDisconnected?.SafeInvoke(_lastTransportError);
|
OnClientDisconnected?.SafeInvoke(_lastTransportError.error, _lastTransportError.reason);
|
||||||
_lastTransportError = null;
|
_lastTransportError = default;
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnServerDisconnect(NetworkConnectionToClient conn) // Called on the server when any client disconnects
|
public override void OnServerDisconnect(NetworkConnectionToClient conn) // Called on the server when any client disconnects
|
||||||
@ -425,9 +409,15 @@ public class QSBNetworkManager : NetworkManager, IAddComponentOnStart
|
|||||||
base.OnStopServer();
|
base.OnStopServer();
|
||||||
}
|
}
|
||||||
|
|
||||||
public override void OnServerError(NetworkConnectionToClient conn, TransportError error, string reason) =>
|
public override void OnServerError(NetworkConnectionToClient conn, TransportError error, string reason)
|
||||||
|
{
|
||||||
DebugLog.DebugWrite($"OnServerError({conn}, {error}, {reason})", MessageType.Error);
|
DebugLog.DebugWrite($"OnServerError({conn}, {error}, {reason})", MessageType.Error);
|
||||||
|
_lastTransportError = (error, reason);
|
||||||
|
}
|
||||||
|
|
||||||
public override void OnClientError(TransportError error, string reason) =>
|
public override void OnClientError(TransportError error, string reason)
|
||||||
|
{
|
||||||
DebugLog.DebugWrite($"OnClientError({error}, {reason})", MessageType.Error);
|
DebugLog.DebugWrite($"OnClientError({error}, {reason})", MessageType.Error);
|
||||||
|
_lastTransportError = (error, reason);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,4 +1,5 @@
|
|||||||
using QSB.DeathSync.Messages;
|
using Mirror;
|
||||||
|
using QSB.DeathSync.Messages;
|
||||||
using QSB.Messaging;
|
using QSB.Messaging;
|
||||||
using QSB.Patches;
|
using QSB.Patches;
|
||||||
using QSB.Player;
|
using QSB.Player;
|
||||||
@ -48,7 +49,7 @@ internal class RespawnManager : MonoBehaviour, IAddComponentOnStart
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnDisconnected(string error)
|
private void OnDisconnected(TransportError error, string reason)
|
||||||
{
|
{
|
||||||
_owRecoveryPoint?.SetActive(true);
|
_owRecoveryPoint?.SetActive(true);
|
||||||
_qsbRecoveryPoint?.SetActive(false);
|
_qsbRecoveryPoint?.SetActive(false);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user