private void listSplits_SelectedIndexChanged(object sender, EventArgs e) { panelSplitEdit.Controls.Clear(); var index = listSplits.SelectedIndices.Count == 0 ? -1 : listSplits.SelectedIndices[0]; var rule = index < 0 ? null : settings.SplitRules[index]; SplitRuleEditControl editControl = rule switch { null => new EmptySplitRuleControl(autosplitter), SplitRuleGettingCards gc => new GettingCardsEditControl(gc, database), SplitRuleGettingFairiesOfClass gfoc => new GettingFairiesOfClassEditControl(gfoc, database), SplitRuleGettingTotalFairies gtf => new GettingTotalFairiesEditControl(gtf, database), SplitRuleReaching r => new ReachingEditControl(r, database), SplitRuleDefeating d => new DefeatingEditControl(d, database), SplitRuleWatching w => new WatchingEditControl(w, database), _ => throw new NotImplementedException($"Unimplemented edit control for {rule}") }; if (editControl == null) { return; } editControl.Dock = DockStyle.Fill; if (index >= 0) { editControl.OnRuleChanged += () => ModifySplitItem(listSplits.Items[index], index, rule); } panelSplitEdit.Controls.Add(editControl); }
public GettingCardsEditControl(SplitRuleGettingCards rule, Database database) { this.rule = rule; this.database = database; InitializeComponent(); comboCardType.DataSource = Enum.GetValues(typeof(CardType)); comboCardIndex.DisplayMember = nameof(KeyValuePair <CardId, string> .Value); SetCardIndexDataSource(); numericAmount.Value = rule.Amount; comboCardType.SelectedItem = rule.Card.type; comboCardIndex.SelectedItem = rule.Card; UpdateIcon(); isInitialised = true; }