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 ReachingEditControl(SplitRuleReaching rule, Database database) { this.rule = rule; this.database = database; InitializeComponent(); comboScene.DataSource = database.SceneNames.ToArray(); comboScene.DisplayMember = nameof(KeyValuePair <SceneId, string> .Value); comboScene.SelectedItem = new KeyValuePair <SceneId, string>(rule.Scene, database.SceneNames[rule.Scene]); isInitialised = true; UpdateIcon(); }