Esempio n. 1
0
        private void btnSetLevel_Click(object sender, EventArgs e)
        {
            string text = txtFile.Text;

            using (ObjectSelector selector = new ObjectSelector()) {
                selector.DrawText = true;

                int imgWidth   = WorldViewer.LevelImageWidth;
                int imgHeight  = WorldViewer.LevelImageHeight;
                int addedCount = LevelList.Count;
                for (int i = 0; i < addedCount; i++)
                {
                    ListItem level = LevelList[i];
                    Grid     map   = (Grid)level.Value;

                    ListItem item = new ListItem(map, map.Name, imgWidth, imgHeight);
                    item.BackColor = level.BackColor;
                    selector.AddItem(item, map.FileName.Equals(text, StringComparison.OrdinalIgnoreCase));
                }

                selector.BackColor = this.BackColor;
                selector.Icon      = this.Icon;

                if (addedCount == 0)
                {
                    MessageBox.Show(this, "No level maps to choose from.");
                    return;
                }

                Size size = Renderer.GetSizeForCount(addedCount, 5, 6);
                selector.ClientSize = new Size(imgWidth * size.Width, imgHeight * size.Height);
                selector.SortByText = LevelList.SortByText;
                selector.SortItems();
                selector.SetRenderItem(delegate(ListItem item, Graphics g) {
                    Grid grid = (Grid)item.Value;
                    Renderer.Render(grid, g, item.Width, item.Height);
                });

                DialogResult result = selector.ShowDialog(this);
                if (result == DialogResult.OK)
                {
                    Grid map = (Grid)selector.SelectedItem;
                    levelCopy.Name = map.Name;
                    levelCopy.File = map.FileName;
                    txtFile.Text   = map.FileName;
                    txtName.Text   = map.Name;
                }
            }
        }