diff --git a/OpenRa.Game/Game.cs b/OpenRa.Game/Game.cs index 20a917c19f..d4e42c86c3 100644 --- a/OpenRa.Game/Game.cs +++ b/OpenRa.Game/Game.cs @@ -79,11 +79,9 @@ namespace OpenRa.Game soundEngine = new ISoundEngine(); sounds = new Cache(LoadSound); - var socket = new TcpClient( "127.0.0.1", 1234 ); - orderManager = (Replay == "") - ? new OrderManager(new[] { new NetworkOrderSource( socket ) }, "replay.rep") - : new OrderManager(new[] { new ReplayOrderSource(Replay) }); + ? new OrderManager(new OrderSource[] { new LocalOrderSource(), new NetworkOrderSource( new TcpClient( "127.0.0.1", 1234 ) ) }, "replay.rep") + : new OrderManager(new OrderSource[] { new ReplayOrderSource( Replay ) }); PlaySound("intro.aud", false); diff --git a/OpenRa.Game/OrderManager.cs b/OpenRa.Game/OrderManager.cs index bf7f714e74..c1480cb84f 100755 --- a/OpenRa.Game/OrderManager.cs +++ b/OpenRa.Game/OrderManager.cs @@ -15,11 +15,17 @@ namespace OpenRa.Game List players; int frameNumber = 0; + const int FramesAhead = 3; + public int FrameNumber { get { return frameNumber; } } public OrderManager( IEnumerable players ) { this.players = players.ToList(); + + foreach( var p in this.players ) + for( int i = 0 ; i < FramesAhead ; i++ ) + p.SendLocalOrders( i, new List() ); } public OrderManager( IEnumerable players, string replayFilename ) @@ -35,7 +41,7 @@ namespace OpenRa.Game return false; foreach( var p in players ) - p.SendLocalOrders( frameNumber, localOrders ); + p.SendLocalOrders( frameNumber + FramesAhead, localOrders ); if( savingReplay != null ) savingReplay.Write( frameNumber );