Example #1
0
 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);
 }
Example #2
0
        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;
                        }
                    }
                }
            }
        }