From a61d21e501bea89ae09338dc78dbd5bd6b4e7d14 Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 21 Oct 2010 15:33:24 +1300 Subject: [PATCH] fix sync-checking in replays --- OpenRA.Game/Network/ReplayConnection.cs | 15 ++++++++++++++- OpenRA.Game/UiOverlay.cs | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/OpenRA.Game/Network/ReplayConnection.cs b/OpenRA.Game/Network/ReplayConnection.cs index 688b7d24e0..8ef46442eb 100755 --- a/OpenRA.Game/Network/ReplayConnection.cs +++ b/OpenRA.Game/Network/ReplayConnection.cs @@ -29,10 +29,23 @@ namespace OpenRA.Network // do nothing; ignore locally generated orders public void Send( int frame, List orders ) { } public void SendImmediate( List orders ) { } - public void SendSync( int frame, byte[] syncData ) { } + public void SendSync( int frame, byte[] syncData ) + { + var ms = new MemoryStream(); + ms.Write( BitConverter.GetBytes( frame ) ); + ms.Write( syncData ); + sync.Add( ms.ToArray() ); + } + + List sync = new List(); public void Receive( Action packetFn ) { + while( sync.Count != 0 ) + { + packetFn( LocalClientId, sync[ 0 ] ); + sync.RemoveAt( 0 ); + } if( replayStream == null ) return; var reader = new BinaryReader( replayStream ); diff --git a/OpenRA.Game/UiOverlay.cs b/OpenRA.Game/UiOverlay.cs index 9036891a11..7caab2a6d1 100644 --- a/OpenRA.Game/UiOverlay.cs +++ b/OpenRA.Game/UiOverlay.cs @@ -41,6 +41,7 @@ namespace OpenRA public void Draw( WorldRenderer wr, World world ) { + if( world.LocalPlayer == null ) return; if (world.LocalPlayer.PlayerActor.Trait().UnitInfluenceDebug) { var uim = world.WorldActor.Trait();