private void checkBox_CheckedChanged(object sender, EventArgs e) { m_listCombination.Clear(); foreach (Control ctl in this.Controls) { if (ctl is GroupBox) { foreach (Control ctli in ((GroupBox)ctl).Controls) { if (ctli is CheckBox) { if (((CheckBox)ctli).Checked) { string name = ((CheckBox)ctli).Text; string count = name.Substring(0, 1); string type = name.Substring(1, name.Length - 1); SelectedCombination sc = new SelectedCombination(); sc.ct = (CombinationType)System.Enum.Parse(typeof(CombinationType), type); sc.nCount = Convert.ToInt32(count); m_listCombination.Add(sc); break; } } } } } RefreshSelectedCombination(); }
private void GenerateEffect() { m_listCombination.Clear(); richTextBox1.Clear(); if (m_listSelectedHeros.Count > 0) { //获取所有不同的特质 for (int i = 0; i < m_listSelectedHeros.Count; i++) { for (int k = 0; k < 24; k++) { if (((int)m_listSelectedHeros[i].ct & (int)Math.Pow(2, k)) == (int)Math.Pow(2, k)) { SelectedCombination sc = new SelectedCombination(); sc.ct = (CombinationType)((int)Math.Pow(2, k)); bool isExist = false; for (int j = 0; j < m_listCombination.Count; j++) { if ((m_listCombination[j].ct & sc.ct) == sc.ct) { isExist = true; break; } } if (!isExist) { m_listCombination.Add(sc); } } } } for (int i = 0; i < m_listCombination.Count; i++) { for (int j = 0; j < m_listSelectedHeros.Count; j++) { if ((m_listCombination[i].ct & m_listSelectedHeros[j].ct) == m_listCombination[i].ct) { m_listCombination[i].nCount++; } } } richTextBox1.AppendText("目前拥有特质:\r\n"); for (int i = 0; i < m_listCombination.Count; i++) { if (i == m_listCombination.Count - 1) { richTextBox1.AppendText(m_listCombination[i].nCount.ToString() + m_listCombination[i].ct.ToString() + "\r\n"); } else { richTextBox1.AppendText(m_listCombination[i].nCount.ToString() + m_listCombination[i].ct.ToString() + "、"); } } richTextBox1.AppendText("产生羁绊:\r\n"); for (int i = 0; i < m_listCombination.Count; i++) { if (TriggerEffect.effect.ContainsKey(m_listCombination[i].nCount.ToString() + m_listCombination[i].ct.ToString())) { richTextBox1.AppendText(TriggerEffect.effect[m_listCombination[i].nCount.ToString() + m_listCombination[i].ct.ToString()] + ".\r\n"); } } } }