public void UpdateNetworkEvents() { void handleReceivedData(IRemote source, INetworkData data, ResponseHandler responseHandler) { if (!(source is IRemoteServer server)) { Log.Error.Write(ErrorSystemType.Network, "Client received data from a non-server."); responseHandler?.Invoke(ResponseType.BadDestination); return; } ProcessData(server, data, responseHandler); } NetworkDataReceiver?.ProcessReceivedData(handleReceivedData); if (Game != null && client != null && client.Connected) { lock (Game) { var gameTime = Game.GameTime; // Save game state from time to time to avoid huge syncs. if (gameTime - lastSavedGameStateGameTime >= SavedGameState.SyncDelay && SavedGameState.TimeToSync(Game)) { Log.Verbose.Write(ErrorSystemType.Network, $"Saving game state with game time {Misc.SecondsToTime(gameTime)}."); lastSavedGameStateGameTime = gameTime; lastSavedGameStates.Add(gameTime, SavedGameState.FromGame(Game)); Log.Verbose.Write(ErrorSystemType.Network, $"Finished saving game state with game time {Misc.SecondsToTime(gameTime)}."); } } } }