Rev 1468 | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 1441 | chris | 1 | using System; |
| 2 | using System.Collections.Generic; |
||
| 3 | using System.Linq; |
||
| 4 | using System.Text; |
||
| 5 | using System.Threading.Tasks; |
||
| 6 | using System.Windows.Forms; |
||
| 7 | |||
| 8 | using BurutaruEditor.file; |
||
| 9 | |||
| 10 | namespace BurutaruEditor.interaction |
||
| 11 | { |
||
| 12 | public class SelectMove : Interaction |
||
| 13 | { |
||
| 1459 | chris | 14 | public const int MOVE_ALL = -1; |
| 15 | |||
| 1441 | chris | 16 | private bool mLeftDown = false; |
| 17 | private int mLastX = 0; |
||
| 18 | private int mLastY = 0; |
||
| 19 | |||
| 20 | private LevelObject mSelectedObject = null; |
||
| 1459 | chris | 21 | private int mSelectedObjectPart = -1; |
| 1441 | chris | 22 | |
| 1468 | chris | 23 | private bool mDocPartSelected = false; |
| 24 | |||
| 1463 | chris | 25 | private LevelObject mHoverObject = null; |
| 26 | private int mHoverObjectPart = -1; |
||
| 27 | |||
| 1441 | chris | 28 | public SelectMove(MainForm owner) |
| 29 | : base(owner) |
||
| 30 | { |
||
| 31 | |||
| 32 | } |
||
| 33 | |||
| 34 | public override void MouseDown(MouseEventArgs e) |
||
| 35 | { |
||
| 36 | if (e.Button == MouseButtons.Left) |
||
| 37 | { |
||
| 38 | mLeftDown = true; |
||
| 39 | |||
| 1459 | chris | 40 | mSelectedObject = Owner.View.FindObjectAt(e.X, e.Y, out mSelectedObjectPart, true); |
| 1467 | chris | 41 | |
| 42 | if (mSelectedObject == null) |
||
| 43 | { |
||
| 44 | // choose Document |
||
| 45 | Owner.Properties.SelectedObject = Owner.Doc; |
||
| 1477 | chris | 46 | Owner.View.SelectedObject = null; |
| 1468 | chris | 47 | mSelectedObjectPart = Owner.View.FindDocumentObjectPart(e.X, e.Y); |
| 48 | if (mSelectedObjectPart != -1) |
||
| 49 | { |
||
| 50 | mDocPartSelected = true; |
||
| 51 | } |
||
| 1467 | chris | 52 | Owner.Properties.ExpandAllGridItems(); |
| 53 | } |
||
| 54 | else |
||
| 55 | { |
||
| 56 | Owner.View.SelectedObject = mSelectedObject; |
||
| 57 | Owner.View.SelectedObjectPart = mSelectedObjectPart; |
||
| 1477 | chris | 58 | Owner.Properties.SelectedObject = mSelectedObject; |
| 59 | Owner.Properties.ExpandAllGridItems(); |
||
| 1467 | chris | 60 | } |
| 1441 | chris | 61 | } |
| 62 | |||
| 63 | mLastX = e.X; |
||
| 64 | mLastY = e.Y; |
||
| 65 | } |
||
| 66 | |||
| 67 | public override void MouseMove(MouseEventArgs e) |
||
| 68 | { |
||
| 1468 | chris | 69 | if (mLeftDown && ((mSelectedObject != null) || (mDocPartSelected))) |
| 1441 | chris | 70 | { |
| 71 | float dx = e.X - mLastX; |
||
| 72 | float dy = e.Y - mLastY; |
||
| 73 | |||
| 74 | if (mSelectedObject != null) |
||
| 75 | { |
||
| 1459 | chris | 76 | mSelectedObject.MoveBy(dx, dy, mSelectedObjectPart); |
| 1447 | chris | 77 | Owner.Properties.Refresh(); |
| 1441 | chris | 78 | } |
| 1467 | chris | 79 | else |
| 80 | { |
||
| 81 | // move Document part |
||
| 1468 | chris | 82 | Owner.View.MoveDocPartBy(dx, dy, mSelectedObjectPart); |
| 83 | Owner.Properties.Refresh(); |
||
| 1467 | chris | 84 | } |
| 1441 | chris | 85 | } |
| 86 | else |
||
| 87 | { |
||
| 1463 | chris | 88 | mHoverObject = Owner.View.FindObjectAt(e.X, e.Y, out mHoverObjectPart); |
| 1441 | chris | 89 | |
| 1463 | chris | 90 | if (mHoverObject == null) |
| 1468 | chris | 91 | { |
| 92 | mHoverObjectPart = Owner.View.FindDocumentObjectPart(e.X, e.Y); |
||
| 93 | if (mHoverObjectPart != -1) |
||
| 94 | Owner.GlView.Cursor = Cursors.SizeAll; |
||
| 95 | else |
||
| 96 | Owner.GlView.Cursor = Cursors.Arrow; |
||
| 97 | } |
||
| 1441 | chris | 98 | else |
| 1463 | chris | 99 | { |
| 1441 | chris | 100 | Owner.GlView.Cursor = Cursors.SizeAll; |
| 1463 | chris | 101 | |
| 102 | } |
||
| 1441 | chris | 103 | } |
| 104 | |||
| 105 | mLastX = e.X; |
||
| 106 | mLastY = e.Y; |
||
| 107 | } |
||
| 108 | |||
| 109 | public override void MouseUp(MouseEventArgs e) |
||
| 110 | { |
||
| 111 | if (e.Button == MouseButtons.Left) |
||
| 112 | { |
||
| 113 | mLeftDown = false; |
||
| 114 | mSelectedObject = null; |
||
| 1459 | chris | 115 | mSelectedObjectPart = -1; |
| 1468 | chris | 116 | mDocPartSelected = false; |
| 1441 | chris | 117 | } |
| 118 | } |
||
| 1463 | chris | 119 | |
| 120 | public override void Render() |
||
| 121 | { |
||
| 122 | if (mHoverObject != null) |
||
| 123 | mHoverObject.RenderSelected(mHoverObjectPart, true); |
||
| 124 | } |
||
| 1441 | chris | 125 | } |
| 126 | } |