tidy up syncreport so it's just the interesting frame
This commit is contained in:
@@ -244,14 +244,18 @@ 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("No sync report available!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
Log.Write("Sync for net frame {0} -------------", f.First);
|
Log.Write("Sync for net frame {0} -------------", f.First);
|
||||||
Log.Write("{0}", f.Second);
|
Log.Write("{0}", f.Second);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
public static void Tick()
|
public static void Tick()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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)
|
||||||
|
|||||||
Reference in New Issue
Block a user