public void SetLayout(FieldLayout layout) { if (null != layout) { foreach (FieldObject fo in fieldObjects) { if (layout.HasEntry(fo.Tag)) { fo.Position = layout.GetEntryPosition(fo.Tag); IsDirty = true; } } Invalidate(); } }
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); } } }