예제 #1
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);
            }
        }
예제 #2
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);
            }
        }
예제 #3
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);
            }
        }
예제 #4
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));
        }
예제 #5
0
 private void UpdateScrollableWindowSize()
 {
     bufferedPanel1.AutoScrollMinSize = new Size(_state.RoomSizeToWindow(_room.Width), _state.RoomSizeToWindow(_room.Height));
 }
예제 #6
0
 private void UpdateScrollableWindowSize()
 {
     bufferedPanel1.AutoScroll    = true;
     lblDummyScrollSizer.Location = new Point(_state.RoomSizeToWindow(_room.Width), _state.RoomSizeToWindow(_room.Height));
 }