diff --git a/OpenRA.Game/Network/FrameData.cs b/OpenRA.Game/Network/FrameData.cs index 0d47d8de97..72eb0d3702 100644 --- a/OpenRA.Game/Network/FrameData.cs +++ b/OpenRA.Game/Network/FrameData.cs @@ -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 clientQuitTimes = new Dictionary(); diff --git a/OpenRA.Game/Network/OrderManager.cs b/OpenRA.Game/Network/OrderManager.cs index f6ea45c423..be1f317c50 100644 --- a/OpenRA.Game/Network/OrderManager.cs +++ b/OpenRA.Game/Network/OrderManager.cs @@ -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)); } diff --git a/OpenRA.Game/Network/SyncReport.cs b/OpenRA.Game/Network/SyncReport.cs index 05ed3c49bc..4b737adf28 100644 --- a/OpenRA.Game/Network/SyncReport.cs +++ b/OpenRA.Game/Network/SyncReport.cs @@ -95,7 +95,7 @@ namespace OpenRA.Network } } - internal void DumpSyncReport(int frame) + internal void DumpSyncReport(int frame, IEnumerable 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; } }