tidy up syncreport so it's just the interesting frame

This commit is contained in:
Chris Forbes
2010-04-30 19:19:22 +12:00
parent b2ec750bcd
commit a22aa7ccb8
2 changed files with 20 additions and 16 deletions

View File

@@ -244,13 +244,17 @@ namespace OpenRA
return sb.ToString(); return sb.ToString();
} }
public static void DumpSyncReport() public static void DumpSyncReport( int frame )
{ {
foreach (var f in syncReports) var f = syncReports.FirstOrDefault(a => a.First == frame);
if (f == null)
{ {
Log.Write("Sync for net frame {0} -------------", f.First); Log.Write("No sync report available!");
Log.Write("{0}", f.Second); return;
} }
Log.Write("Sync for net frame {0} -------------", f.First);
Log.Write("{0}", f.Second);
} }
public static void Tick() public static void Tick()

View File

@@ -109,35 +109,35 @@ namespace OpenRA.Network
Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>(); Dictionary<int, byte[]> syncForFrame = new Dictionary<int, byte[]>();
void CheckSync( byte[] packet ) void CheckSync(byte[] packet)
{ {
var frame = BitConverter.ToInt32( packet, 0 ); var frame = BitConverter.ToInt32(packet, 0);
byte[] existingSync; byte[] existingSync;
if( syncForFrame.TryGetValue( frame, out existingSync ) ) if (syncForFrame.TryGetValue(frame, out existingSync))
{ {
if( packet.Length != existingSync.Length ) if (packet.Length != existingSync.Length)
{ {
Game.DumpSyncReport(); Game.DumpSyncReport(frame);
OutOfSync( frame ); OutOfSync(frame);
} }
else else
{ {
for( int i = 0 ; i < packet.Length ; i++ ) for (int i = 0; i < packet.Length; i++)
{ {
if( packet[ i ] != existingSync[ i ] ) if (packet[i] != existingSync[i])
{ {
Game.DumpSyncReport(); Game.DumpSyncReport(frame);
if ( i < SyncHeaderSize ) if (i < SyncHeaderSize)
OutOfSync(frame, "Tick"); OutOfSync(frame, "Tick");
else else
OutOfSync( frame , (i - SyncHeaderSize) / 4); OutOfSync(frame, (i - SyncHeaderSize) / 4);
} }
} }
} }
} }
else else
syncForFrame.Add( frame, packet ); syncForFrame.Add(frame, packet);
} }
void OutOfSync( int frame , int index) void OutOfSync( int frame , int index)