private void CheckToolMenu() { Map.SegmentType segType = _mapControl.SegmentType; _emptyMenuItem.Checked = (segType == Map.SegmentType.Empty); _wallMenuItem.Checked = (segType == Map.SegmentType.Wall); _doorMenuItem.Checked = (segType == Map.SegmentType.Door); _transitionMenuItem.Checked = (segType == Map.SegmentType.Transition); }
private void DrawMap(Graphics g) { Pen pen = new Pen(Brushes.Black, 2); for (int yi = 0; yi < _map.Height + 1; ++yi) { Map.SegmentType lastSeg = Map.SegmentType.Wall; for (int xi = 0; xi < _map.Width + 1; ++xi) { Map.SegmentType seg = Map.SegmentType.Empty; int x1 = _margin.X + xi * _scale; int x2 = _margin.X + (xi + 1) * _scale; int y1 = _margin.Y + yi * _scale; int y2 = _margin.Y + (yi + 1) * _scale; if (xi < _map.Width) { seg = _map.GetSegment(xi, yi, Map.Direction.North); switch (seg) { case Map.SegmentType.Empty: break; case Map.SegmentType.Door: g.DrawLine(pen, x1 - 2, y1, x1 + _scale / 4, y1); g.DrawRectangle(pen, x1 + _scale / 4, y1 - 2, _scale / 2, 4); g.DrawLine(pen, x2 - _scale / 4, y1, x2 + 2, y1); break; case Map.SegmentType.Transition: g.DrawLine(pen, x1 + _scale / 2, y1 - 3, x1 + _scale / 2, y1 + 3); break; case Map.SegmentType.Wall: g.DrawLine(pen, x1 - 2, y1, x2 + 2, y1); g.DrawLine(pen, x1, y1 - 2, x1, y1 + 2); break; } lastSeg = seg; } if (seg == Map.SegmentType.Empty && _map.Width > 0) { g.DrawLine(pen, x1 - 2, y1, x1 + 2, y1); g.DrawLine(pen, x1, y1 - 2, x1, y1 + 2); } if (yi < _map.Height) { seg = _map.GetSegment(xi, yi, Map.Direction.West); switch (seg) { case Map.SegmentType.Empty: break; case Map.SegmentType.Door: g.DrawLine(pen, x1, y1 - 2, x1, y1 + _scale / 4); g.DrawRectangle(pen, x1 - 2, y1 + _scale / 4, 4, _scale / 2); g.DrawLine(pen, x1, y2 - _scale / 4, x1, y2 + 2); break; case Map.SegmentType.Transition: g.DrawLine(pen, x1 - 3, y1 + _scale / 2, x1 + 3, y1 + _scale / 2); break; case Map.SegmentType.Wall: g.DrawLine(pen, x1, y1 - 2, x1, y2 + 2); break; } } } } }