private RoomObject GetObject(int x, int y) { for (int i = _objectBaselines.Count - 1; i >= 0; i--) { RoomObject obj = _objectBaselines[i]; DesignTimeProperties p = DesignItems[GetItemID(obj)]; if (!p.Visible) { continue; } if (HitTest(obj, x, y)) { return(obj); } } return(null); }
public virtual void Paint(Graphics graphics, RoomEditorState state) { if (!Enabled || _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); int xPos = state.RoomXToWindow(_selectedObject.StartX); int 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); } }