Ejemplo n.º 1
0
        private void ItemInfoDialogLoad(object sender, EventArgs e)
        {
            tvItems.BeginUpdate();
            tvItems.Nodes.Clear();

            tvItems.Nodes.Add("", "None");

            if (AvailableSlots != null || _showAllItems)
            {
                foreach (var factory in FactoryManager.GetAllItems())
                {
                    if (!_showAllItems && !IsSlotAvailable(factory))
                    {
                        continue;
                    }
                    var typeName = factory.GetType().Name;
                    if (!tvItems.Nodes.ContainsKey(typeName))
                    {
                        var cleanTypeName = typeName;
                        if (typeName.EndsWith("Factory"))
                        {
                            cleanTypeName = typeName.Substring(0, typeName.Length - "Factory".Length);
                        }
                        tvItems.Nodes.Add(typeName, cleanTypeName);
                    }
                    tvItems.Nodes[typeName].Nodes.Add(factory.Name, factory.Name);
                }
            }
            tvItems.EndUpdate();

            var select = tvItems.Nodes.Find(SelectedItemName, true);

            if (select.Length > 0)
            {
                tvItems.SelectedNode = select[0];
            }
            else
            {
                tvItems.SelectedNode = null;
            }

            // Close directly if there are no items we can select.
            if (tvItems.Nodes.Count == 1)
            {
                MessageBox.Show("No slots remaining, or no items known that would fit the slots.", "Notice",
                                MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                DialogResult = DialogResult.Cancel;
            }
        }