public frmMain() { InitializeComponent(); XmlSerializer xml; try { xml = new XmlSerializer(typeof(AlchemyBase)); } catch (Exception x) { MessageBox.Show( "Ошибка сериализации, невозможно создать сериализатор. Попробуйте запустить программу с правами администратора.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); return; } try { using (var fs = new StringReader(Resources.alchemy)) { _base = (AlchemyBase)xml.Deserialize(fs); } } catch (Exception x) { MessageBox.Show( "Не удается прочитать базу данных. Возможно данные повреждены, переустановите программу.", "Ошибка", MessageBoxButtons.OK, MessageBoxIcon.Error); Application.Exit(); return; } foreach (var item in _base.Items) { comboBox1.Items.Add(item); checkedListBox1.Items.Add(item); } foreach (var effect in _base.Effects) { comboBox2.Items.Add(effect); } comboBox1.SelectedIndex = 0; }
public void Calculate(AlchemyBase db) { int[] effects; if (Items.Length == 2) { effects = Items[0].Effects.Where(e => Items[1].Effects.Contains(e)).ToArray(); } else { var e1 = Items[0].Effects.Where(e => Items[1].Effects.Contains(e)).ToArray(); var e2 = Items[0].Effects.Where(e => Items[2].Effects.Contains(e)).ToArray(); var e3 = Items[1].Effects.Where(e => Items[2].Effects.Contains(e)).ToArray(); effects = e1.Concat(e2.Concat(e3)).Distinct().ToArray(); } Value = effects.Select(e => db.Effects[e].Value).Sum(); }