Example #1
0
        /// <summary>
        /// Draw hint overlay.
        /// NOTE: this is NOT drawing on actual mask, which is performed when
        /// user releases mouse button.
        /// </summary>
        public virtual void Paint(Graphics graphics, RoomEditorState state)
        {
            int roomPixel     = state.RoomSizeToWindow(1);
            int halfRoomPixel = roomPixel / 2;

            if ((_mouseDown) && (_drawMode == AreaDrawMode.Line))
            {
                int penWidth = (int)(roomPixel * GetHintScaleFactor(state));
                Pen pen      = GetPenForArea(_drawingWithArea);
                pen = new Pen(pen.Color, penWidth);
                graphics.DrawLine(pen, state.RoomXToWindow(_mouseDownX) + halfRoomPixel,
                                  state.RoomYToWindow(_mouseDownY) + halfRoomPixel,
                                  state.RoomXToWindow(_currentMouseX) + halfRoomPixel,
                                  state.RoomYToWindow(_currentMouseY) + halfRoomPixel);
                pen.Dispose();
            }
            else if ((_mouseDown) && (_drawMode == AreaDrawMode.Rectangle))
            {
                int x1 = state.RoomXToWindow(_mouseDownX);
                int y1 = state.RoomYToWindow(_mouseDownY);
                int x2 = state.RoomXToWindow(_currentMouseX);
                int y2 = state.RoomYToWindow(_currentMouseY);
                EnsureSmallestNumberIsFirst(ref x1, ref x2);
                EnsureSmallestNumberIsFirst(ref y1, ref y2);
                graphics.FillRectangle(GetBrushForArea(_drawingWithArea),
                                       x1, y1, x2 - x1 + roomPixel, y2 - y1 + roomPixel);
            }
        }
Example #2
0
        public virtual void Paint(Graphics graphics, RoomEditorState state)
        {
            if ((_mouseDown) && (_drawMode == AreaDrawMode.Line))
            {
                int penWidth    = (int)GetScaleFactor(state);
                int extraOffset = penWidth / 2;
                Pen pen         = GetPenForArea(_drawingWithArea);
                pen = new Pen(pen.Color, penWidth);
                graphics.DrawLine(pen, state.RoomXToWindow(_mouseDownX) + extraOffset,
                                  state.RoomYToWindow(_mouseDownY) + extraOffset,
                                  state.RoomXToWindow(_currentMouseX) + extraOffset,
                                  state.RoomYToWindow(_currentMouseY) + extraOffset);
                pen.Dispose();
            }
            else if ((_mouseDown) && (_drawMode == AreaDrawMode.Rectangle))
            {
                int mousePressedAtX = state.RoomXToWindow(_mouseDownX);
                int mousePressedAtY = state.RoomYToWindow(_mouseDownY);
                int mouseNowAtX     = state.RoomXToWindow(_currentMouseX);
                int mouseNowAtY     = state.RoomYToWindow(_currentMouseY);
                EnsureSmallestNumberIsFirst(ref mousePressedAtX, ref mouseNowAtX);
                EnsureSmallestNumberIsFirst(ref mousePressedAtY, ref mouseNowAtY);
                mouseNowAtX += (int)GetScaleFactor(state) - 1;
                mouseNowAtY += (int)GetScaleFactor(state) - 1;

                graphics.FillRectangle(GetBrushForArea(_drawingWithArea), mousePressedAtX, mousePressedAtY, mouseNowAtX - mousePressedAtX + 1, mouseNowAtY - mousePressedAtY + 1);
            }
        }
Example #3
0
        public virtual void Paint(Graphics graphics, RoomEditorState state)
        {
            int xPos;
            int yPos;

            if (_selectedObject == null)
            {
                return;
            }
            DesignTimeProperties design = DesignItems[GetItemID(_selectedObject)];

            if (!design.Visible)
            {
                return;
            }

            int width, height;

            Utilities.GetSizeSpriteWillBeRenderedInGame(_selectedObject.Image, out width, out height);
            width  = state.RoomSizeToWindow(width);
            height = state.RoomSizeToWindow(height);
            xPos   = state.RoomXToWindow(_selectedObject.StartX);
            yPos   = state.RoomYToWindow(_selectedObject.StartY) - height;
            Pen pen = new Pen(Color.Goldenrod);

            pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
            graphics.DrawRectangle(pen, xPos, yPos, width, height);

            if (_movingObjectWithMouse)
            {
                System.Drawing.Font font = new System.Drawing.Font("Arial", 10.0f);
                string toDraw            = String.Format("X:{0}, Y:{1}", _selectedObject.StartX, _selectedObject.StartY);

                int scaledx = xPos + (width / 2) - ((int)graphics.MeasureString(toDraw, font).Width / 2);
                int scaledy = yPos - (int)graphics.MeasureString(toDraw, font).Height;
                if (scaledx < 0)
                {
                    scaledx = 0;
                }
                if (scaledy < 0)
                {
                    scaledy = 0;
                }

                graphics.DrawString(toDraw, font, pen.Brush, (float)scaledx, (float)scaledy);
            }
            else if (design.Locked)
            {
                pen  = new Pen(Color.Goldenrod, 2);
                xPos = state.RoomXToWindow(_selectedObject.StartX) + (width / 2);
                yPos = state.RoomYToWindow(_selectedObject.StartY) - (height / 2);
                Point center = new Point(xPos, yPos);

                graphics.DrawLine(pen, center.X - 3, center.Y - 3, center.X + 3, center.Y + 3);
                graphics.DrawLine(pen, center.X - 3, center.Y + 3, center.X + 3, center.Y - 3);
            }
        }
Example #4
0
        public virtual void PaintToHDC(IntPtr hDC, RoomEditorState state)
        {
            _objectBaselines.Clear();
            foreach (RoomObject obj in _room.Objects)
            {
                if (obj.Baseline <= 0)
                {
                    obj.EffectiveBaseline = obj.StartY;
                }
                else
                {
                    obj.EffectiveBaseline = obj.Baseline;
                }
                _objectBaselines.Add(obj);
            }
            _objectBaselines.Sort();

            foreach (RoomObject obj in _objectBaselines)
            {
                if (!DesignItems[GetItemID(obj)].Visible)
                {
                    continue;
                }
                int width, height;
                Utilities.GetSizeSpriteWillBeRenderedInGame(obj.Image, out width, out height);
                int ypos = state.RoomYToWindow(obj.StartY - height);
                Factory.NativeProxy.DrawSpriteToBuffer(obj.Image, state.RoomXToWindow(obj.StartX), ypos, state.Scale);
            }
        }
Example #5
0
        private void DrawCharacter(Character character, RoomEditorState state)
        {
            AgsView view = _game.FindViewByID(character.NormalView);

            if (view != null && view.Loops.Count > 0)
            {
                int spriteNum = 0;

                //this is a check to make certain that loop 0 frame 0 of the character normalview has an image;
                //if not, it defaults to using spriteNum 0
                if (view.Loops[0].Frames.Count > 0)
                {
                    ViewFrame thisFrame = view.Loops[0].Frames[0];
                    spriteNum = thisFrame.Image;
                }
                int xPos = state.RoomXToWindow(character.StartX);
                int yPos = state.RoomYToWindow(character.StartY);
                int spriteWidth, spriteHeight;
                Utilities.GetSizeSpriteWillBeRenderedInGame(spriteNum, out spriteWidth, out spriteHeight);
                spriteWidth  = state.RoomSizeToWindow(spriteWidth);
                spriteHeight = state.RoomSizeToWindow(spriteHeight);

                Factory.NativeProxy.DrawSpriteToBuffer(spriteNum, xPos - spriteWidth / 2, yPos - spriteHeight, state.Scale);
            }
        }
Example #6
0
 public void Paint(Graphics graphics, RoomEditorState state)
 {
     if (DesignItems[GetItemID(SelectedEdge.Left)].Visible)
     {
         DrawEdge(graphics, state.RoomXToWindow(_room.LeftEdgeX), state.Scale, SelectedEdge.Left);
     }
     if (DesignItems[GetItemID(SelectedEdge.Right)].Visible)
     {
         DrawEdge(graphics, state.RoomXToWindow(_room.RightEdgeX), state.Scale, SelectedEdge.Right);
     }
     if (DesignItems[GetItemID(SelectedEdge.Top)].Visible)
     {
         DrawEdge(graphics, state.RoomYToWindow(_room.TopEdgeY), state.Scale, SelectedEdge.Top);
     }
     if (DesignItems[GetItemID(SelectedEdge.Bottom)].Visible)
     {
         DrawEdge(graphics, state.RoomYToWindow(_room.BottomEdgeY), state.Scale, SelectedEdge.Bottom);
     }
 }
Example #7
0
        private void bufferedPanel1_Paint(object sender, PaintEventArgs e)
        {
            _state.UpdateScroll(bufferedPanel1.AutoScrollPosition);

            int scaleFactor = 1;

            if ((_room.Resolution == RoomResolution.LowRes) &&
                (Factory.AGSEditor.CurrentGame.IsHighResolution))
            {
                // low-res room in high-res game, scale up since object
                // co-ordinates will be high-res
                scaleFactor = 2;
            }

            int backgroundNumber = cmbBackgrounds.SelectedIndex;

            if (backgroundNumber < _room.BackgroundCount)
            {
                e.Graphics.SetClip(new Rectangle(0, 0, _state.RoomSizeToWindow(_room.Width), _state.RoomSizeToWindow(_room.Height)));
                IntPtr hdc = e.Graphics.GetHdc();
                Factory.NativeProxy.CreateBuffer(bufferedPanel1.ClientSize.Width + SystemInformation.VerticalScrollBarWidth,
                                                 bufferedPanel1.ClientSize.Height + SystemInformation.HorizontalScrollBarHeight);
                // Adjust co-ordinates using original scale factor so that it lines
                // up with objects, etc
                int drawOffsX = _state.RoomXToWindow(0);
                int drawOffsY = _state.RoomYToWindow(0);
                IRoomEditorFilter maskFilter = GetCurrentMaskFilter();
                lock (_room)
                {
                    Factory.NativeProxy.DrawRoomBackground(hdc, _room, drawOffsX, drawOffsY, backgroundNumber, _state.Scale * scaleFactor,
                                                           maskFilter == null ? RoomAreaMaskType.None : maskFilter.MaskToDraw,
                                                           (maskFilter == null || !maskFilter.Enabled) ? 0 : maskFilter.SelectedArea, sldTransparency.Value);
                }
                foreach (IRoomEditorFilter layer in _layers)
                {
                    if (!IsVisible(layer))
                    {
                        continue;
                    }
                    layer.PaintToHDC(hdc, _state);
                }
                Factory.NativeProxy.RenderBufferToHDC(hdc);
                e.Graphics.ReleaseHdc(hdc);
                foreach (IRoomEditorFilter layer in _layers)
                {
                    if (!IsVisible(layer))
                    {
                        continue;
                    }
                    layer.Paint(e.Graphics, _state);
                }
            }
            base.OnPaint(e);
        }
Example #8
0
        public void Paint(Graphics graphics, RoomEditorState state)
        {
            float scale = state.Scale;

            if (DesignItems[GetItemID(SelectedEdge.Left)].Visible)
            {
                DrawDoubleWidthVerticalLine(graphics, state.RoomXToWindow(_room.LeftEdgeX), scale);
            }
            if (DesignItems[GetItemID(SelectedEdge.Right)].Visible)
            {
                DrawDoubleWidthVerticalLine(graphics, state.RoomXToWindow(_room.RightEdgeX), scale);
            }
            if (DesignItems[GetItemID(SelectedEdge.Top)].Visible)
            {
                DrawDoubleHeightHorizontalLine(graphics, state.RoomYToWindow(_room.TopEdgeY), scale);
            }
            if (DesignItems[GetItemID(SelectedEdge.Bottom)].Visible)
            {
                DrawDoubleHeightHorizontalLine(graphics, state.RoomYToWindow(_room.BottomEdgeY), scale);
            }
        }
Example #9
0
        public override void Paint(Graphics graphics, RoomEditorState state)
        {
            base.Paint(graphics, state);

            foreach (RoomHotspot hotspot in _room.Hotspots)
            {
                if ((hotspot.WalkToPoint.X > 0) && (hotspot.WalkToPoint.Y > 0))
                {
                    int x = state.RoomXToWindow(hotspot.WalkToPoint.X);
                    int y = state.RoomYToWindow(hotspot.WalkToPoint.Y);
                    graphics.DrawLine(Pens.Red, x - 4, y - 4, x + 4, y + 4);
                    graphics.DrawLine(Pens.RosyBrown, x - 4, y + 4, x + 4, y - 4);
                    graphics.DrawString(hotspot.ID.ToString(), new System.Drawing.Font(FontFamily.GenericSansSerif, 10, FontStyle.Bold), Brushes.Gold, x + 4, y - 7);
                }
            }
        }
Example #10
0
        private void bufferedPanel1_Paint(object sender, PaintEventArgs e)
        {
            _state.UpdateScroll(bufferedPanel1.AutoScrollPosition);

            int scaleFactor = 1;

            int backgroundNumber = cmbBackgrounds.SelectedIndex;

            if (backgroundNumber < _room.BackgroundCount)
            {
                int bufWidth  = _state.RoomSizeToWindow(_room.Width);
                int bufHeight = _state.RoomSizeToWindow(_room.Height);
                e.Graphics.SetClip(new Rectangle(0, 0, bufWidth, bufHeight));
                IntPtr hdc = e.Graphics.GetHdc();
                Factory.NativeProxy.CreateBuffer(bufWidth, bufHeight);
                // Adjust co-ordinates using original scale factor so that it lines
                // up with objects, etc
                int drawOffsX = _state.RoomXToWindow(0);
                int drawOffsY = _state.RoomYToWindow(0);
                IRoomEditorFilter maskFilter = GetCurrentMaskFilter();
                lock (_room)
                {
                    Factory.NativeProxy.DrawRoomBackground(hdc, _room, drawOffsX, drawOffsY, backgroundNumber, _state.Scale * scaleFactor,
                                                           maskFilter == null ? RoomAreaMaskType.None : maskFilter.MaskToDraw,
                                                           maskFilter == null ? 0 : maskFilter.SelectedArea, sldTransparency.Value);
                }
                foreach (IRoomEditorFilter layer in _layers)
                {
                    if (!IsVisible(layer))
                    {
                        continue;
                    }
                    layer.PaintToHDC(hdc, _state);
                }
                Factory.NativeProxy.RenderBufferToHDC(hdc);
                e.Graphics.ReleaseHdc(hdc);
                foreach (IRoomEditorFilter layer in _layers)
                {
                    if (!IsVisible(layer))
                    {
                        continue;
                    }
                    layer.Paint(e.Graphics, _state);
                }
            }
            base.OnPaint(e);
        }
Example #11
0
        private Rectangle GetCharacterRect(Character character, RoomEditorState state)
        {
            AgsView view = _game.FindViewByID(character.NormalView);
            int     xPos = state.RoomXToWindow(character.StartX);
            int     yPos = state.RoomYToWindow(character.StartY);

            if (view == null || view.Loops.Count == 0)
            {
                return(new Rectangle(xPos - 5, yPos - 5, 10, 10));
            }

            int spriteNum = 0;

            if (view.Loops[0].Frames.Count > 0)
            {
                spriteNum = _game.FindViewByID(character.NormalView).Loops[0].Frames[0].Image;
            }
            int spriteWidth  = state.RoomSizeToWindow(GetSpriteWidthForGameResolution(spriteNum));
            int spriteHeight = state.RoomSizeToWindow(GetSpriteHeightForGameResolution(spriteNum));

            return(new Rectangle(xPos - spriteWidth / 2, yPos - spriteHeight, spriteWidth, spriteHeight));
        }