using System; using System.Collections.Generic; using System.Linq; using System.Windows.Forms; using pkNX.Structures.FlatBuffers.Arceus; namespace pkNX.WinForms.Controls; public partial class PlacementSpawnerEditor8a : UserControl { public IList Spawners = []; public PlacementSpawnerEditor8a() => InitializeComponent(); public void LoadTable(IList table, string path) { Spawners = table; if (table.Count == 0) { Visible = false; return; } Visible = true; L_ConfigName.Text = path; var items = table.Select(z => new ComboItem(z.NameSummary.Replace("\"", ""), z)).ToArray(); CB_Encounters.DisplayMember = nameof(ComboItem.Text); CB_Encounters.ValueMember = nameof(ComboItem.Value); CB_Encounters.DataSource = new BindingSource(items, null); CB_Encounters.SelectedIndex = 0; } private class ComboItem(string text, T value) { public string Text { get; } = text; public T Value { get; } = value; } private void CB_Encounters_SelectedIndexChanged(object sender, EventArgs e) { if (CB_Encounters.SelectedValue is not PlacementSpawner spawner) throw new ArgumentException(nameof(CB_Encounters.SelectedValue)); PG_Spawner.SelectedObject = spawner; } private void B_MaxSpawnCountRange_Click(object sender, EventArgs e) { const int count = 8; foreach (var spawner in Spawners) { spawner.MinSpawnCount = spawner.MaxSpawnCount = count; } WinFormsUtil.Alert($"Set all to have {count} entities spawned."); CB_Encounters_SelectedIndexChanged(sender, e); } }