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,14 +244,18 @@ namespace OpenRA
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("No sync report available!");
return;
}
Log.Write("Sync for net frame {0} -------------", f.First);
Log.Write("{0}", f.Second);
}
}
public static void Tick()
{

View File

@@ -109,35 +109,35 @@ namespace OpenRA.Network
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;
if( syncForFrame.TryGetValue( frame, out existingSync ) )
if (syncForFrame.TryGetValue(frame, out existingSync))
{
if( packet.Length != existingSync.Length )
if (packet.Length != existingSync.Length)
{
Game.DumpSyncReport();
OutOfSync( frame );
Game.DumpSyncReport(frame);
OutOfSync(frame);
}
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");
else
OutOfSync( frame , (i - SyncHeaderSize) / 4);
OutOfSync(frame, (i - SyncHeaderSize) / 4);
}
}
}
}
else
syncForFrame.Add( frame, packet );
syncForFrame.Add(frame, packet);
}
void OutOfSync( int frame , int index)