public void Add(string bldName)
        {
            BuildingIcon icn = new BuildingIcon(bldName, reg);

            Tip.SetToolTip(icn, bldName);

            base.Controls.Add(icn);
            Arrange();
        }
 public void UpdateSelection(BuildingIcon select)
 {
     selected = select;
     if (ghost != null)
     {
         Destroy(ghost.gameObject);
         ghost = null;
     }
     if (selected != null)
     {
         ghost         = Instantiate(selected.buildingPrefab);
         ghost.enabled = false;
         foreach (var behavior in ghost.toDisableAsGhost)
         {
             behavior.enabled = false;
         }
         ghost.GetComponent <MeshRenderer>().material = ghostMaterial;
     }
 }
 private void Start()
 {
     selected = null;
 }
        void initCategories(ContentManager content)
        {
            var categories = Enum.GetValues(typeof(BuildingCategory));

            var buildings =
                Enum.GetValues(typeof(Building)).OfType <Building>().ToList();

            foreach (BuildingCategory category in categories)
            {
                var inCategory = (List <Building>)buildings
                                 .Where(building =>
                                        world.GetBuildingProperties(building).Category ==
                                        category)
                                 .ToList();

                buildingIcons[category] = new List <BuildingIcon>();

                foreach (var building in inCategory)
                {
                    var properties = world.GetBuildingProperties(building);

                    var texture =
                        content.Load <Texture2D>(properties.IconTexture);

                    var icon = new BuildingIcon(
                        texture,
                        properties.Description,
                        0,
                        4);

                    icon.OnClick += delegate
                    {
                        var purchase = world.CreateBuilding(building);

                        var buildingScreen =
                            new BuildingScreen(purchase, world, false);

                        buildingScreen.OnPurchase += delegate
                        {
                            ExitScreen();
                        };

                        ScreenManager.AddScreen(buildingScreen);
                    };

                    buildingIcons[category].Add(icon);
                }
            }

            var rowWidth = (BuildingIcon.Size.X + iconPadding) * iconsPerRow;
            var offsetX  = (menuTexture.Width - rowWidth) / 2;

            iconPositions = new Vector2[maxRows * iconsPerRow];

            for (int i = 0; i < categories.Length; i++)
            {
                int row = i / iconsPerRow;

                iconPositions[i] = new Vector2()
                {
                    X = offsetX + (i * (BuildingIcon.Size.X + iconPadding)),
                    Y = iconYOffset +
                        (row * (BuildingIcon.Size.Y + iconPadding))
                };
            }
        }