public void PickColor(byte selectedColorId, string headerText, List <ArkColor> naturalColors = null, byte selectedColorIdAlternative = 0)
        {
            label1.Text = headerText;
            var colors = values.Values.V.Colors.colorsList;

            SelectedColorId             = selectedColorId;
            SelectedColorIdAlternative  = selectedColorIdAlternative;
            _naturalColorIDs            = naturalColors?.Select(ac => ac.Id).ToArray();
            checkBoxOnlyNatural.Visible = _naturalColorIDs != null;
            if (_naturalColorIDs == null)
            {
                checkBoxOnlyNatural.Checked = true;
            }

            flowLayoutPanel1.SuspendLayout();

            for (int colorIndex = 1; colorIndex < colors.Count; colorIndex++)
            {
                int controlIndex = colorIndex - 1;
                if (flowLayoutPanel1.Controls.Count <= controlIndex)
                {
                    var np = new NoPaddingButton
                    {
                        Width  = 44,
                        Height = 24,
                        Margin = new Padding(0)
                    };
                    np.Click += ColorChosen;
                    flowLayoutPanel1.Controls.Add(np);
                }

                if (flowLayoutPanel1.Controls[controlIndex] is NoPaddingButton bt)
                {
                    bt.Visible             = ColorVisible(colors[colorIndex].Id);
                    bt.Selected            = SelectedColorId == colors[colorIndex].Id;
                    bt.SelectedAlternative = SelectedColorIdAlternative == colors[colorIndex].Id;
                    bt.SetBackColorAndAccordingForeColor(colors[colorIndex].Color);
                    bt.Tag  = colors[colorIndex].Id;
                    bt.Text = colors[colorIndex].Id.ToString();
                    _tt.SetToolTip(bt, colors[colorIndex].Id + ": " + colors[colorIndex].Name);
                }
            }

            flowLayoutPanel1.ResumeLayout();
            isShown = true;
        }
        public RegionColorChooser()
        {
            InitializeComponent();

            _buttonColors = new NoPaddingButton[Species.ColorRegionCount];
            for (int i = 0; i < Species.ColorRegionCount; i++)
            {
                var b = new NoPaddingButton {
                    Width = 27, Height = 27, Margin = new Padding(1), Text = i.ToString()
                };
                var ii = i;
                b.Click         += (s, e) => ChooseColor(ii, b);
                _buttonColors[i] = b;
                flowLayoutPanel1.Controls.Add(b);
            }

            _selectedRegionColorIds      = new byte[Species.ColorRegionCount];
            _selectedColorIdsAlternative = new byte[Species.ColorRegionCount];

            ColorRegionsUseds = new bool[Species.ColorRegionCount];
            _colorPicker      = new MyColorPicker();
            _tt.AutoPopDelay  = 7000;
            Disposed         += RegionColorChooser_Disposed;
        }