Save disconnect frame in the GameInformation

This information is useful to infer a winner in case the winstate is
unknown.
This commit is contained in:
Clément Bœsch
2020-07-26 21:56:37 +02:00
committed by abcdefg30
parent ca8870a5cf
commit 815bbc6ee8
4 changed files with 24 additions and 0 deletions

View File

@@ -1044,6 +1044,12 @@ namespace OpenRA.Server
// Send disconnected order, even if still in the lobby
DispatchOrdersToClients(toDrop, 0, Order.FromTargetString("Disconnected", "", true).Serialize());
if (gameInfo != null && !dropClient.IsObserver)
{
var disconnectedPlayer = gameInfo.Players.First(p => p.ClientIndex == toDrop.PlayerIndex);
disconnectedPlayer.DisconnectFrame = toDrop.MostRecentFrame;
}
LobbyInfo.Clients.RemoveAll(c => c.Index == toDrop.PlayerIndex);
LobbyInfo.ClientPings.RemoveAll(p => p.Index == toDrop.PlayerIndex);