/// <summary> /// 向列表中添加所选圣遗物的属性 /// </summary> /// <param name="it">被选中的圣遗物tag</param> private void AddItem(SummariedItem it) { // 遍历整个列表,若tag和已存在的tag重复,则进行下面的操作。 // 若tag的对应值和所重复的tag的对应值类型一致,则进行下面的操作。 // 将这两个对应值相加,输出为新的tag对应值。 // 否则直接输出tag及其对应值。 summariedItems.Add(it); var splited = Translate(it.tag, it.tagValue, 4).Split('*'); ListViewItem TempItem = new ListViewItem(new string[] { splited[0], splited[1], "" }); var flag = false; for (int i = 0; i < ResultList.Items.Count; i++) { var item = ResultList.Items[i]; TempItem = new ListViewItem(new string[] { splited[0], splited[1], Translate(ResultList.Items[i].SubItems[0].Text, ResultList.Items[i].SubItems[1].Text) }); if (item.Text == TempItem.Text) { if (item.SubItems[1].Text.Contains("%") == TempItem.SubItems[1].Text.Contains("%")) { var NewValue = Convert.ToDouble(item.SubItems[1].Text.TrimEnd('%').TrimEnd(' ')) + Convert.ToDouble(TempItem.SubItems[1].Text.TrimEnd('%').TrimEnd(' ')); item.SubItems[1].Text = NewValue.ToString(); if (TempItem.SubItems[1].Text.Contains("%")) { item.SubItems[1].Text += "%"; } flag = true; } else { flag = false; } } else { flag = false; } if (flag) { break; } } if (!flag) { ResultList.Items.Add(TempItem); } }
/// <summary> /// 将选定的五个圣遗物进行汇总 /// </summary> private void Summary() { bool[] chk = new bool[ResultList.Items.Count]; for (int k = 0; k < ResultList.Items.Count; k++) { chk[k] = ResultList.Items[k].Checked; } ResultList.Items.Clear(); { SummariedItem item = new SummariedItem(); for (int i = 0; i < 5; i++) { if (SelectedArtifacts[i].ArtifactName != null) { if (MainTagConsidered) { item.tag = SelectedArtifacts[i].Maintag; item.tagValue = SelectedArtifacts[i].MaintagValue; AddItem(item); } for (int t = 0; t < SelectedArtifacts[i].Subtag.Length; t++) { item.tag = SelectedArtifacts[i].Subtag[t]; item.tagValue = SelectedArtifacts[i].SubtagValue[t]; AddItem(item); } } } } int chklength = chk.Length < ResultList.Items.Count ? chk.Length : ResultList.Items.Count; for (int k = 0; k < chklength; k++) { if (chk.Length < 1) { ResultList.Items[k].Checked = false; } else { ResultList.Items[k].Checked = chk[k]; } } EntriesCalc(); }