When dumping the sync report, log all the orders issued in the frame that desynced.

This commit is contained in:
RoosterDragon
2015-08-09 20:59:15 +01:00
parent 709befda08
commit 89f5a23077
3 changed files with 12 additions and 3 deletions

View File

@@ -19,6 +19,11 @@ namespace OpenRA.Network
{
public int Client;
public Order Order;
public override string ToString()
{
return "ClientId: {0} {1}".F(Client, Order);
}
}
readonly Dictionary<int, int> clientQuitTimes = new Dictionary<int, int>();

View File

@@ -51,9 +51,9 @@ namespace OpenRA.Network
bool disposed;
static void OutOfSync(int frame)
void OutOfSync(int frame)
{
syncReport.DumpSyncReport(frame);
syncReport.DumpSyncReport(frame, frameData.OrdersForFrame(World, frame));
throw new InvalidOperationException("Out of sync in frame {0}.\n Compare syncreport.log with other players.".F(frame));
}

View File

@@ -95,7 +95,7 @@ namespace OpenRA.Network
}
}
internal void DumpSyncReport(int frame)
internal void DumpSyncReport(int frame, IEnumerable<FrameData.ClientOrder> orders)
{
foreach (var r in syncReports)
{
@@ -128,6 +128,10 @@ namespace OpenRA.Network
Log.Write("sync", "\t\t {0}: {1}".F(nvp.First[i], nvp.Second[i]));
}
Log.Write("sync", "Orders Issued:");
foreach (var o in orders)
Log.Write("sync", "\t {0}", o.ToString());
return;
}
}