diff --git a/src/AcDream.App/Rendering/GameWindow.cs b/src/AcDream.App/Rendering/GameWindow.cs index 5edfaee4..f629da8a 100644 --- a/src/AcDream.App/Rendering/GameWindow.cs +++ b/src/AcDream.App/Rendering/GameWindow.cs @@ -4977,6 +4977,29 @@ public sealed class GameWindow : IDisposable Speed: item.Speed)); } ims.Actions = actionList; + + // #170 capture aid (ACDREAM_DUMP_MOTION): dump the + // REMOTE inbound action list WITH stamps — the + // existing UM line only shows ForwardCommand, and the + // [CMD_LIST] dump is local-player only. This is what + // answers "do the attack stamps advance (variety) or + // repeat (uniform)?". Strip once #170 is understood. + if (Environment.GetEnvironmentVariable("ACDREAM_DUMP_MOTION") == "1") + { + var sb = new System.Text.StringBuilder(); + sb.Append(System.FormattableString.Invariant( + $"UM ↳ actions guid=0x{update.Guid:X8} mt=0x{update.MotionState.MovementType:X2} fwd=0x{ims.ForwardCommand:X8} [")); + for (int ai = 0; ai < actionList.Count; ai++) + { + var a = actionList[ai]; + var rt = AcDream.Core.Physics.AnimationCommandRouter.Classify(a.Command); + if (ai > 0) sb.Append(", "); + sb.Append(System.FormattableString.Invariant( + $"0x{a.Command:X8}({rt}) stamp={a.Stamp} auto={a.Autonomous} spd={a.Speed:F2}")); + } + sb.Append(']'); + Console.WriteLine(sb.ToString()); + } } // R2-Q5/R3-W4: funnel dispatches go STRAIGHT into the