MineEntry.cs 7.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222
  1. using Microsoft.VisualBasic.PowerPacks;
  2. using Server.MirForms.VisualMapInfo.Class;
  3. namespace Server.MirForms.VisualMapInfo.Control
  4. {
  5. public partial class MineEntry : UserControl
  6. {
  7. public RectangleShape RegionHighlight = new RectangleShape();
  8. public byte MineIndex;
  9. public bool RegionHidden = false;
  10. Point MouseDownLocation;
  11. public int X, Y;
  12. public ushort tempRange;
  13. public ushort Range
  14. {
  15. get => (ushort)(tempRange);
  16. set
  17. {
  18. tempRange = 0;
  19. if (value > 0)
  20. tempRange = (ushort)(value);
  21. RegionHighlight.Size = new Size(
  22. tempRange * 2 * VisualizerGlobal.ZoomLevel,
  23. tempRange * 2 * VisualizerGlobal.ZoomLevel);
  24. RegionHighlight.Left = (X - value) * VisualizerGlobal.ZoomLevel;
  25. RegionHighlight.Top = (Y - value) * VisualizerGlobal.ZoomLevel;
  26. Details.Text = $"X: {X.ToString()} | Y: {Y.ToString()} | Range: {Range.ToString()}";
  27. }
  28. }
  29. protected override CreateParams CreateParams
  30. {
  31. get
  32. {
  33. var parms = base.CreateParams;
  34. parms.Style &= ~0x02000000; // Turn off WS_CLIPCHILDREN
  35. return parms;
  36. }
  37. }
  38. public MineEntry()
  39. {
  40. InitializeComponent();
  41. InitializeRegionHighlight();
  42. }
  43. private void InitializeRegionHighlight()
  44. {
  45. RegionHighlight.Visible = false;
  46. RegionHighlight.BorderColor = Color.Lime;
  47. RegionHighlight.FillColor = Color.FromArgb(30, 200, 0, 200);
  48. RegionHighlight.BorderWidth = 2;
  49. RegionHighlight.MouseMove += new System.Windows.Forms.MouseEventHandler(this.Region_MouseMove);
  50. RegionHighlight.MouseDown += new System.Windows.Forms.MouseEventHandler(this.Region_MouseDown);
  51. RegionHighlight.MouseEnter += new System.EventHandler(this.Region_MouseEnter);
  52. RegionHighlight.MouseLeave += new System.EventHandler(this.Region_MouseLeave);
  53. RegionHighlight.MouseClick += new System.Windows.Forms.MouseEventHandler(RegionHighlight_MouseClick);
  54. RegionHighlight.MouseHover += RegionHighlight_MouseHover;
  55. }
  56. #region "Start RegionHighlight Methods"
  57. private void Region_MouseLeave(object sender, EventArgs e)
  58. {
  59. if (RegionHighlight.Visible)
  60. this.BackColor = Color.White;
  61. else
  62. this.BackColor = Color.Silver;
  63. RegionHighlight.BorderColor = Color.Lime;
  64. RegionHighlight.FillStyle = FillStyle.Transparent;
  65. }
  66. private void Region_MouseEnter(object sender, EventArgs e)
  67. {
  68. if (!RegionHighlight.Visible) return;
  69. this.BackColor = Color.MediumOrchid;
  70. RegionHighlight.BorderColor = Color.MediumOrchid;
  71. RegionHighlight.FillStyle = FillStyle.Solid;
  72. RegionHighlight.Cursor = VisualizerGlobal.Cursor;
  73. }
  74. private void Region_MouseDown(object sender, MouseEventArgs e)
  75. {
  76. RegionHighlight.BringToFront();
  77. this.BackColor = Color.Orange;
  78. RegionHighlight.BorderColor = Color.Orange;
  79. if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Select) return;
  80. MouseDownLocation = e.Location;
  81. }
  82. private void Region_MouseMove(object sender, MouseEventArgs e)
  83. {
  84. if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Select) return;
  85. if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Add) return;
  86. if (e.Button == System.Windows.Forms.MouseButtons.Left)
  87. if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Move)
  88. {
  89. RegionHighlight.Left = e.X + RegionHighlight.Left - MouseDownLocation.X;
  90. RegionHighlight.Top = e.Y + RegionHighlight.Top - MouseDownLocation.Y;
  91. X = (RegionHighlight.Left + Range) / VisualizerGlobal.ZoomLevel;
  92. Y = (RegionHighlight.Top + Range) / VisualizerGlobal.ZoomLevel;
  93. Range = tempRange;
  94. }
  95. else if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Resize)
  96. Range += (ushort)((MouseDownLocation.X - e.Location.X) / VisualizerGlobal.ZoomLevel);
  97. if (e.Button == System.Windows.Forms.MouseButtons.Right)
  98. if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Move)
  99. Range += (ushort)((MouseDownLocation.X - e.Location.X) / VisualizerGlobal.ZoomLevel);
  100. else
  101. return;
  102. }
  103. private void RegionHighlight_MouseClick(object sender, MouseEventArgs e)
  104. {
  105. if (VisualizerGlobal.SelectedTool == VisualizerGlobal.Tool.Focus)
  106. {
  107. VisualizerGlobal.SelectedFocusType = VisualizerGlobal.FocusType.Mining;
  108. VisualizerGlobal.FocusMineEntry = this;
  109. VisualizerGlobal.FocusModeActive = true;
  110. }
  111. MineComboBox.Focus();
  112. }
  113. private void RegionHighlight_MouseHover(object sender, EventArgs e)
  114. {
  115. RegionHighlight.Cursor = VisualizerGlobal.Cursor;
  116. }
  117. #endregion "End RegionHighlight Methods"
  118. public void UpdateForFocus()
  119. {
  120. RegionHighlight.Left = X * VisualizerGlobal.ZoomLevel;
  121. RegionHighlight.Top = Y * VisualizerGlobal.ZoomLevel;
  122. Range = tempRange;
  123. }
  124. public void RemoveEntry()
  125. {
  126. RegionHighlight.Dispose();
  127. this.Dispose();
  128. }
  129. public void HideControl()
  130. {
  131. RegionHighlight.Visible = false;
  132. }
  133. public void ShowControl()
  134. {
  135. RegionHighlight.Visible = true;
  136. }
  137. public void HideRegion()
  138. {
  139. RegionHighlight.Visible = false;
  140. this.BackColor = Color.Silver;
  141. RegionHidden = true;
  142. }
  143. public void ShowRegion()
  144. {
  145. RegionHighlight.Visible = true;
  146. this.BackColor = Color.White;
  147. RegionHidden = false;
  148. }
  149. private void MineComboBox_SelectedIndexChanged(object sender, EventArgs e)
  150. {
  151. MineIndex = Convert.ToByte(MineComboBox.SelectedIndex);
  152. }
  153. private void MineEntry_Load(object sender, EventArgs e)
  154. {
  155. List<string> mineSetItems = new() { { "Disabled" } };
  156. Settings.MineSetList.ForEach(x => mineSetItems.Add(x.Name));
  157. MineComboBox.DataSource = mineSetItems;
  158. MineComboBox.SelectedIndex = MineIndex;
  159. Details.Text = $"X: {X.ToString()} | Y: {Y.ToString()} | Range: {Range.ToString()}";
  160. }
  161. private void Details_DoubleClick(object sender, EventArgs e)
  162. {
  163. Forms.MiningDetailForm MiningDetail = new Forms.MiningDetailForm();
  164. MiningDetail.X.Text = X.ToString();
  165. MiningDetail.Y.Text = Y.ToString();
  166. MiningDetail.Range.Text = Range.ToString();
  167. MiningDetail.ShowDialog();
  168. X = Convert.ToInt16(MiningDetail.X.Text);
  169. Y = Convert.ToInt16(MiningDetail.Y.Text);
  170. Range = Convert.ToUInt16(MiningDetail.Range.Text);
  171. MiningDetail.Dispose();
  172. }
  173. }
  174. }