private void DrawLayoutIntoGraphics(Graphics g, FieldLayout layoutToDraw, FieldLayout nextLayoutData) { if (null == FieldType) { return; } g.SmoothingMode = SmoothingMode.AntiAlias; g.Transform = fieldToDisplayTransform; FieldType.DrawMarkings(g); // Draw the movement lines that show the movement between the current position and // the next position in the sequence (these are drawn first so that they appear under // the players) if (nextLayoutData != null) { foreach (FieldObject fieldObject in fieldObjects) { if (nextLayoutData.HasEntry(fieldObject.Tag)) { if (null != layoutToDraw) { fieldObject.DrawMovementLineFrom(g, layoutToDraw.GetEntryPosition(fieldObject.Tag), nextLayoutData.GetEntryPosition(fieldObject.Tag)); } else { fieldObject.DrawMovementLine(g, nextLayoutData.GetEntryPosition(fieldObject.Tag)); } } // endif } } // Draw each of the field objects foreach (FieldObject fieldObject in fieldObjects) { if (null != layoutToDraw) { fieldObject.DrawAt(g, layoutToDraw.GetEntryPosition(fieldObject.Tag)); } else { fieldObject.Draw(g); } } }