MiningInfoForm.cs 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  1. using Server.MirDatabase;
  2. using Server.MirEnvir;
  3. namespace Server
  4. {
  5. public partial class MiningInfoForm : Form
  6. {
  7. public Envir Envir => SMain.EditEnvir;
  8. public bool MinesChanged = false;
  9. public List<string> mineIndexItems = new();
  10. public MiningInfoForm()
  11. {
  12. InitializeComponent();
  13. int i = 0;
  14. Settings.MineSetList.ForEach(x => { mineIndexItems.Add(x.Name); i++; });
  15. MineIndexcomboBox.Items.Add(i);
  16. MineIndexcomboBox.DataSource = mineIndexItems;
  17. UpdateMines();
  18. }
  19. private void MiningInfoForm_FormClosed(object sender, FormClosedEventArgs e)
  20. {
  21. if (MinesChanged)
  22. Settings.SaveMines();
  23. }
  24. private void UpdateMines()
  25. {
  26. if (MineIndexcomboBox.SelectedItem == null)
  27. {
  28. MineDropsIndexcomboBox.Items.Clear();
  29. MineNametextBox.Text = string.Empty;
  30. MineRegenDelaytextBox.Text = string.Empty;
  31. MineAttemptstextBox.Text = string.Empty;
  32. MineHitRatetextBox.Text = string.Empty;
  33. MineDropRatetextBox.Text = string.Empty;
  34. MineSlotstextBox.Text = string.Empty;
  35. MineItemNametextBox.Text = string.Empty;
  36. MineMinSlottextBox.Text = string.Empty;
  37. MineMaxSlottextBox.Text = string.Empty;
  38. MineMinQualitytextBox.Text = string.Empty;
  39. MineMaxQualitytextBox.Text = string.Empty;
  40. MineBonusChancetextBox.Text = string.Empty;
  41. MineMaxBonustextBox.Text = string.Empty;
  42. }
  43. else
  44. {
  45. if (MineIndexcomboBox.SelectedIndex >= Settings.MineSetList.Count)
  46. {
  47. MineIndexcomboBox.SelectedItem = null;
  48. UpdateMines();
  49. return;
  50. }
  51. MineNametextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Name.ToString();
  52. MineRegenDelaytextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].SpotRegenRate.ToString();
  53. MineAttemptstextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].MaxStones.ToString();
  54. MineHitRatetextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].HitRate.ToString();
  55. MineDropRatetextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].DropRate.ToString();
  56. MineSlotstextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].TotalSlots.ToString();
  57. if (MineDropsIndexcomboBox.SelectedIndex >= Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.Count) MineDropsIndexcomboBox.SelectedItem = null;
  58. if (MineDropsIndexcomboBox.SelectedItem == null)
  59. {
  60. MineItemNametextBox.Text = string.Empty;
  61. MineMinSlottextBox.Text = string.Empty;
  62. MineMaxSlottextBox.Text = string.Empty;
  63. MineMinQualitytextBox.Text = string.Empty;
  64. MineMaxQualitytextBox.Text = string.Empty;
  65. MineBonusChancetextBox.Text = string.Empty;
  66. MineMaxBonustextBox.Text = string.Empty;
  67. }
  68. else
  69. {
  70. MineItemNametextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].ItemName;
  71. MineMinSlottextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MinSlot.ToString();
  72. MineMaxSlottextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MaxSlot.ToString();
  73. MineMinQualitytextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MinDura.ToString();
  74. MineMaxQualitytextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MaxDura.ToString();
  75. MineBonusChancetextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].BonusChance.ToString();
  76. MineMaxBonustextBox.Text = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MaxBonusDura.ToString();
  77. }
  78. }
  79. }
  80. #region Events
  81. private void MineIndexcomboBox_SelectedIndexChanged(object sender, EventArgs e)
  82. {
  83. if (ActiveControl != sender) return;
  84. MineDropsIndexcomboBox.Items.Clear();
  85. if (MineIndexcomboBox.SelectedIndex < Settings.MineSetList.Count)
  86. {
  87. for (int i = 0; i < Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.Count; i++)
  88. MineDropsIndexcomboBox.Items.Add(i);
  89. }
  90. UpdateMines();
  91. }
  92. private void MineAddIndexbutton_Click(object sender, EventArgs e)
  93. {
  94. if (ActiveControl != sender) return;
  95. MinesChanged = true;
  96. Settings.MineSetList.Add(new MineSet());
  97. mineIndexItems.Add("");
  98. MineIndexcomboBox.SelectedIndex = -1;
  99. MineIndexcomboBox.DataSource = null;
  100. MineIndexcomboBox.DataSource = mineIndexItems;
  101. MineIndexcomboBox.SelectedIndex = Settings.MineSetList.Count - 1;
  102. MineDropsIndexcomboBox.Items.Clear();
  103. UpdateMines();
  104. }
  105. private void MineRemoveIndexbutton_Click(object sender, EventArgs e)
  106. {
  107. if (ActiveControl != sender) return;
  108. if (MessageBox.Show("Are you sure you want to delete the last index?", "Delete?", MessageBoxButtons.YesNo) != DialogResult.Yes) return;
  109. MinesChanged = true;
  110. mineIndexItems.RemoveAt(Settings.MineSetList.Count - 1);
  111. Settings.MineSetList.RemoveAt(Settings.MineSetList.Count - 1);
  112. MineIndexcomboBox.SelectedIndex = -1;
  113. MineIndexcomboBox.DataSource = null;
  114. MineIndexcomboBox.DataSource = mineIndexItems;
  115. MineIndexcomboBox.Refresh();
  116. UpdateMines();
  117. }
  118. private void MineRegenDelaytextBox_TextChanged(object sender, EventArgs e)
  119. {
  120. if (ActiveControl != sender) return;
  121. if (MineIndexcomboBox.SelectedItem == null) return;
  122. byte temp;
  123. if (!byte.TryParse(ActiveControl.Text, out temp))
  124. {
  125. ActiveControl.BackColor = Color.Red;
  126. return;
  127. }
  128. ActiveControl.BackColor = SystemColors.Window;
  129. MinesChanged = true;
  130. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].SpotRegenRate = temp;
  131. }
  132. private void MineAttemptstextBox_TextChanged(object sender, EventArgs e)
  133. {
  134. if (ActiveControl != sender) return;
  135. if (MineIndexcomboBox.SelectedItem == null) return;
  136. byte temp;
  137. if (!byte.TryParse(ActiveControl.Text, out temp))
  138. {
  139. ActiveControl.BackColor = Color.Red;
  140. return;
  141. }
  142. ActiveControl.BackColor = SystemColors.Window;
  143. MinesChanged = true;
  144. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].MaxStones = temp;
  145. }
  146. private void MineSlotstextBox_TextChanged(object sender, EventArgs e)
  147. {
  148. if (ActiveControl != sender) return;
  149. if (MineIndexcomboBox.SelectedItem == null) return;
  150. byte temp;
  151. if (!byte.TryParse(ActiveControl.Text, out temp))
  152. {
  153. ActiveControl.BackColor = Color.Red;
  154. return;
  155. }
  156. ActiveControl.BackColor = SystemColors.Window;
  157. MinesChanged = true;
  158. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].TotalSlots = temp;
  159. }
  160. private void MineHitRatetextBox_TextChanged(object sender, EventArgs e)
  161. {
  162. if (ActiveControl != sender) return;
  163. if (MineIndexcomboBox.SelectedItem == null) return;
  164. byte temp;
  165. if (!byte.TryParse(ActiveControl.Text, out temp))
  166. {
  167. ActiveControl.BackColor = Color.Red;
  168. return;
  169. }
  170. ActiveControl.BackColor = SystemColors.Window;
  171. MinesChanged = true;
  172. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].HitRate = temp;
  173. }
  174. private void MineDropRatetextBox_TextChanged(object sender, EventArgs e)
  175. {
  176. if (ActiveControl != sender) return;
  177. if (MineIndexcomboBox.SelectedItem == null) return;
  178. byte temp;
  179. if (!byte.TryParse(ActiveControl.Text, out temp))
  180. {
  181. ActiveControl.BackColor = Color.Red;
  182. return;
  183. }
  184. ActiveControl.BackColor = SystemColors.Window;
  185. MinesChanged = true;
  186. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].DropRate = temp;
  187. }
  188. private void MineDropsIndexcomboBox_SelectedIndexChanged(object sender, EventArgs e)
  189. {
  190. if (ActiveControl != sender) return;
  191. UpdateMines();
  192. }
  193. private void MineAddDropbutton_Click(object sender, EventArgs e)
  194. {
  195. if (ActiveControl != sender) return;
  196. MinesChanged = true;
  197. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.Add(new MineDrop());
  198. MineDropsIndexcomboBox.Items.Add(Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.Count - 1);
  199. MineDropsIndexcomboBox.SelectedIndex = Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.Count - 1;
  200. }
  201. private void MineRemoveDropbutton_Click(object sender, EventArgs e)
  202. {
  203. if (ActiveControl != sender) return;
  204. if (MessageBox.Show("Are you sure you want to delete the last index?", "Delete?", MessageBoxButtons.YesNo) != DialogResult.Yes) return;
  205. MinesChanged = true;
  206. MineDropsIndexcomboBox.Items.Remove(Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.Count - 1);
  207. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.RemoveAt(Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops.Count - 1);
  208. UpdateMines();
  209. }
  210. private void MineItemNametextBox_TextChanged(object sender, EventArgs e)
  211. {
  212. if (ActiveControl != sender) return;
  213. if (MineIndexcomboBox.SelectedItem == null) return;
  214. if (MineDropsIndexcomboBox.SelectedItem == null) return;
  215. string temp = ActiveControl.Text;
  216. ActiveControl.BackColor = Color.Red;
  217. for (int i = 0; i < SMain.EditEnvir.ItemInfoList.Count; i++)
  218. {
  219. if (SMain.EditEnvir.ItemInfoList[i].Name == temp)
  220. {
  221. ActiveControl.BackColor = SystemColors.Window;
  222. break;
  223. }
  224. }
  225. if (ActiveControl.BackColor == Color.Red)
  226. return;
  227. MinesChanged = true;
  228. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].ItemName = temp;
  229. }
  230. private void MineMinSlottextBox_TextChanged(object sender, EventArgs e)
  231. {
  232. if (ActiveControl != sender) return;
  233. if (MineIndexcomboBox.SelectedItem == null) return;
  234. if (MineDropsIndexcomboBox.SelectedItem == null) return;
  235. byte temp;
  236. if (!byte.TryParse(ActiveControl.Text, out temp))
  237. {
  238. ActiveControl.BackColor = Color.Red;
  239. return;
  240. }
  241. ActiveControl.BackColor = SystemColors.Window;
  242. MinesChanged = true;
  243. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MinSlot = temp;
  244. }
  245. private void MineMaxSlottextBox_TextChanged(object sender, EventArgs e)
  246. {
  247. if (ActiveControl != sender) return;
  248. if (MineIndexcomboBox.SelectedItem == null) return;
  249. if (MineDropsIndexcomboBox.SelectedItem == null) return;
  250. byte temp;
  251. if (!byte.TryParse(ActiveControl.Text, out temp))
  252. {
  253. ActiveControl.BackColor = Color.Red;
  254. return;
  255. }
  256. ActiveControl.BackColor = SystemColors.Window;
  257. MinesChanged = true;
  258. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MaxSlot = temp;
  259. }
  260. private void MineMinQualitytextBox_TextChanged(object sender, EventArgs e)
  261. {
  262. if (ActiveControl != sender) return;
  263. if (MineIndexcomboBox.SelectedItem == null) return;
  264. if (MineDropsIndexcomboBox.SelectedItem == null) return;
  265. byte temp;
  266. if (!byte.TryParse(ActiveControl.Text, out temp))
  267. {
  268. ActiveControl.BackColor = Color.Red;
  269. return;
  270. }
  271. ActiveControl.BackColor = SystemColors.Window;
  272. MinesChanged = true;
  273. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MinDura = temp;
  274. }
  275. private void MineMaxQualitytextBox_TextChanged(object sender, EventArgs e)
  276. {
  277. if (ActiveControl != sender) return;
  278. if (MineIndexcomboBox.SelectedItem == null) return;
  279. if (MineDropsIndexcomboBox.SelectedItem == null) return;
  280. byte temp;
  281. if (!byte.TryParse(ActiveControl.Text, out temp))
  282. {
  283. ActiveControl.BackColor = Color.Red;
  284. return;
  285. }
  286. ActiveControl.BackColor = SystemColors.Window;
  287. MinesChanged = true;
  288. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MaxDura = temp;
  289. }
  290. private void MineBonusChancetextBox_TextChanged(object sender, EventArgs e)
  291. {
  292. if (ActiveControl != sender) return;
  293. if (MineIndexcomboBox.SelectedItem == null) return;
  294. if (MineDropsIndexcomboBox.SelectedItem == null) return;
  295. byte temp;
  296. if (!byte.TryParse(ActiveControl.Text, out temp))
  297. {
  298. ActiveControl.BackColor = Color.Red;
  299. return;
  300. }
  301. ActiveControl.BackColor = SystemColors.Window;
  302. MinesChanged = true;
  303. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].BonusChance = temp;
  304. }
  305. private void MineMaxBonustextBox_TextChanged(object sender, EventArgs e)
  306. {
  307. if (ActiveControl != sender) return;
  308. if (MineIndexcomboBox.SelectedItem == null) return;
  309. if (MineDropsIndexcomboBox.SelectedItem == null) return;
  310. byte temp;
  311. if (!byte.TryParse(ActiveControl.Text, out temp))
  312. {
  313. ActiveControl.BackColor = Color.Red;
  314. return;
  315. }
  316. ActiveControl.BackColor = SystemColors.Window;
  317. MinesChanged = true;
  318. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Drops[MineDropsIndexcomboBox.SelectedIndex].MaxBonusDura = temp;
  319. }
  320. private void MineNametextBox_TextChanged(object sender, EventArgs e)
  321. {
  322. if (ActiveControl != sender) return;
  323. if (MineIndexcomboBox.SelectedItem == null) return;
  324. string temp = ActiveControl.Text;
  325. ActiveControl.BackColor = SystemColors.Window;
  326. MinesChanged = true;
  327. Settings.MineSetList[MineIndexcomboBox.SelectedIndex].Name = temp;
  328. MineIndexcomboBox.Refresh();
  329. }
  330. #endregion
  331. }
  332. }