From 30a16ca4bdc2460dd20e766eb312ad8aed6fc166 Mon Sep 17 00:00:00 2001 From: Paul Chote Date: Tue, 13 Apr 2010 12:30:20 +1200 Subject: [PATCH] Print actors list on desync [squashed] --- OpenRA.Game/Network/OrderManager.cs | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/OpenRA.Game/Network/OrderManager.cs b/OpenRA.Game/Network/OrderManager.cs index d1db2e0f5d..bcf1bbd97b 100755 --- a/OpenRA.Game/Network/OrderManager.cs +++ b/OpenRA.Game/Network/OrderManager.cs @@ -23,6 +23,7 @@ using System.Collections.Generic; using System.IO; using System.Linq; using OpenRA.FileFormats; +using OpenRA.Traits; namespace OpenRA.Network { @@ -116,17 +117,22 @@ namespace OpenRA.Network if( syncForFrame.TryGetValue( frame, out existingSync ) ) { if( packet.Length != existingSync.Length ) + { + DumpActors(); OutOfSync( frame ); + } else { for( int i = 0 ; i < packet.Length ; i++ ) { if( packet[ i ] != existingSync[ i ] ) { + DumpActors(); + if ( i < SyncHeaderSize ) OutOfSync(frame, "Tick"); else - OutOfSync( frame , (i - SyncHeaderSize) / 4); + OutOfSync( frame , (i - SyncHeaderSize) / 4); } } } @@ -135,6 +141,17 @@ namespace OpenRA.Network syncForFrame.Add( frame, packet ); } + static void DumpActors() + { + Log.Write( "Actors:" ); + foreach( var a in Game.world.Actors ) + Log.Write( "\t {0} {1} {2} ({3})", a.ActorID, a.Info.Name, ( a.Owner == null ) ? "null" : a.Owner.InternalName, Sync.CalculateSyncHash( a ) ); + + Log.Write( "Tick Actors:" ); + foreach( var a in Game.world.Queries.WithTraitMultiple() ) + Log.Write( "\t {0} {1} {2} {3} ({4})", a.Actor.ActorID, a.Actor.Info.Name, ( a.Actor.Owner == null ) ? "null" : a.Actor.Owner.InternalName, a.Trait.GetType().Name, Sync.CalculateSyncHash( a.Trait ) ); + } + void OutOfSync( int frame , int index) { var frameData = clientQuitTimes