| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222 |
- using Microsoft.VisualBasic.PowerPacks;
- using Server.MirForms.VisualMapInfo.Class;
- namespace Server.MirForms.VisualMapInfo.Control
- {
- public partial class MineEntry : UserControl
- {
- public RectangleShape RegionHighlight = new RectangleShape();
- public byte MineIndex;
- public bool RegionHidden = false;
- Point MouseDownLocation;
- public int X, Y;
- public ushort tempRange;
- public ushort Range
- {
- get => (ushort)(tempRange);
- set
- {
- tempRange = 0;
- if (value > 0)
- tempRange = (ushort)(value);
- RegionHighlight.Size = new Size(
- tempRange * 2 * VisualizerGlobal.ZoomLevel,
- tempRange * 2 * VisualizerGlobal.ZoomLevel);
- RegionHighlight.Left = (X - value) * VisualizerGlobal.ZoomLevel;
- RegionHighlight.Top = (Y - value) * VisualizerGlobal.ZoomLevel;
- Details.Text = $"X: {X.ToString()} | Y: {Y.ToString()} | Range: {Range.ToString()}";
- }
- }
- protected override CreateParams CreateParams
- {
- get
- {
- var parms = base.CreateParams;
- parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
- return parms;
- }
- }
- public MineEntry()
- {
- InitializeComponent();
- InitializeRegionHighlight();
- }
- private void InitializeRegionHighlight()
- {
- RegionHighlight.Visible = false;
- RegionHighlight.BorderColor = Color.Lime;
- RegionHighlight.FillColor = Color.FromArgb(30, 200, 0, 200);
- RegionHighlight.BorderWidth = 2;
- RegionHighlight.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Region_MouseMove);
- RegionHighlight.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Region_MouseDown);
- RegionHighlight.MouseEnter += new System.EventHandler(this.Region_MouseEnter);
- RegionHighlight.MouseLeave += new System.EventHandler(this.Region_MouseLeave);
- RegionHighlight.MouseClick += new System.Windows.Forms.MouseEventHandler(RegionHighlight_MouseClick);
- RegionHighlight.MouseHover += RegionHighlight_MouseHover;
- }
- #region "Start RegionHighlight Methods"
- private void Region_MouseLeave(object sender, EventArgs e)
- {
- if (RegionHighlight.Visible)
- this.BackColor = Color.White;
- else
- this.BackColor = Color.Silver;
- RegionHighlight.BorderColor = Color.Lime;
- RegionHighlight.FillStyle = FillStyle.Transparent;
- }
- private void Region_MouseEnter(object sender, EventArgs e)
- {
- if (!RegionHighlight.Visible) return;
- this.BackColor = Color.MediumOrchid;
- RegionHighlight.BorderColor = Color.MediumOrchid;
- RegionHighlight.FillStyle = FillStyle.Solid;
- RegionHighlight.Cursor = VisualizerGlobal.Cursor;
- }
- private void Region_MouseDown(object sender, MouseEventArgs e)
- {
- RegionHighlight.BringToFront();
- this.BackColor = Color.Orange;
- RegionHighlight.BorderColor = Color.Orange;
- if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Select) return;
- MouseDownLocation = e.Location;
- }
- private void Region_MouseMove(object sender, MouseEventArgs e)
- {
- if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Select) return;
- if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Add) return;
- if (e.Button == System.Windows.Forms.MouseButtons.Left)
- if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Move)
- {
- RegionHighlight.Left = e.X + RegionHighlight.Left - MouseDownLocation.X;
- RegionHighlight.Top = e.Y + RegionHighlight.Top - MouseDownLocation.Y;
- X = (RegionHighlight.Left + Range) / VisualizerGlobal.ZoomLevel;
- Y = (RegionHighlight.Top + Range) / VisualizerGlobal.ZoomLevel;
- Range = tempRange;
- }
- else if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Resize)
- Range += (ushort)((MouseDownLocation.X - e.Location.X) / VisualizerGlobal.ZoomLevel);
- if (e.Button == System.Windows.Forms.MouseButtons.Right)
- if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Move)
- Range += (ushort)((MouseDownLocation.X - e.Location.X) / VisualizerGlobal.ZoomLevel);
- else
- return;
- }
- private void RegionHighlight_MouseClick(object sender, MouseEventArgs e)
- {
- if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Focus)
- {
- VisualizerGlobal.SelectedFocusType = VisualizerGlobal.FocusType.Mining;
- VisualizerGlobal.FocusMineEntry = this;
- VisualizerGlobal.FocusModeActive = true;
- }
- MineComboBox.Focus();
- }
- private void RegionHighlight_MouseHover(object sender, EventArgs e)
- {
- RegionHighlight.Cursor = VisualizerGlobal.Cursor;
- }
- #endregion "End RegionHighlight Methods"
- public void UpdateForFocus()
- {
- RegionHighlight.Left = X * VisualizerGlobal.ZoomLevel;
- RegionHighlight.Top = Y * VisualizerGlobal.ZoomLevel;
- Range = tempRange;
- }
- public void RemoveEntry()
- {
- RegionHighlight.Dispose();
- this.Dispose();
- }
- public void HideControl()
- {
- RegionHighlight.Visible = false;
- }
- public void ShowControl()
- {
- RegionHighlight.Visible = true;
- }
- public void HideRegion()
- {
- RegionHighlight.Visible = false;
- this.BackColor = Color.Silver;
- RegionHidden = true;
- }
- public void ShowRegion()
- {
- RegionHighlight.Visible = true;
- this.BackColor = Color.White;
- RegionHidden = false;
- }
- private void MineComboBox_SelectedIndexChanged(object sender, EventArgs e)
- {
- MineIndex = Convert.ToByte(MineComboBox.SelectedIndex);
- }
- private void MineEntry_Load(object sender, EventArgs e)
- {
- List<string> mineSetItems = new() { { "Disabled" } };
- Settings.MineSetList.ForEach(x => mineSetItems.Add(x.Name));
- MineComboBox.DataSource = mineSetItems;
- MineComboBox.SelectedIndex = MineIndex;
- Details.Text = $"X: {X.ToString()} | Y: {Y.ToString()} | Range: {Range.ToString()}";
- }
- private void Details_DoubleClick(object sender, EventArgs e)
- {
- Forms.MiningDetailForm MiningDetail = new Forms.MiningDetailForm();
- MiningDetail.X.Text = X.ToString();
- MiningDetail.Y.Text = Y.ToString();
- MiningDetail.Range.Text = Range.ToString();
- MiningDetail.ShowDialog();
- X = Convert.ToInt16(MiningDetail.X.Text);
- Y = Convert.ToInt16(MiningDetail.Y.Text);
- Range = Convert.ToUInt16(MiningDetail.Range.Text);
- MiningDetail.Dispose();
- }
- }
- }
|