public void TileSelected(TileScript tile)
        {
            var techTree = Global.FindTechTree();

            for (var i = 0; i < transform.childCount; ++i)
            {
                Destroy(transform.GetChild(i).gameObject);
            }

            if (!tile.Structure.IsWasteland())
            {
                gameObject.SetActive(false);
                return;
            }
            var buildableStructures =
                techTree.Structures.Where(s => s.IsBuildAllowed(tileGridController, tile.pos)).ToList();

            if (buildableStructures.Count == 0)
            {
                gameObject.SetActive(false);
                return;
            }

            foreach (var structure in buildableStructures)
            {
                var obj = Instantiate(buildingButtonPrefab, transform);
                obj.name = structure.name;
                var rawImage = obj.GetComponent <RawImage>();
                rawImage.texture = structure.texture;
                var button = obj.GetComponent <Button>();

                button.onClick.AddListener(() =>
                {
                    tile.BuildStructure(structure, gameObject.transform);
                    tileMenuController.TileSelected(tile);
                });

                var eventTrigger = obj.GetComponent <EventTrigger>();
                var entry        = new EventTrigger.Entry();
                entry.eventID = EventTriggerType.PointerEnter;
                entry.callback.AddListener(d =>
                {
                    var cost = structure.Cost(tileGridController);
                    tile.displayCost(button.transform, cost, structure.name);
                });
                eventTrigger.triggers.Add(entry);

                entry         = new EventTrigger.Entry();
                entry.eventID = EventTriggerType.PointerExit;
                entry.callback.AddListener(d =>
                {
                    foreach (Transform child in button.transform.GetComponentInChildren <VerticalLayoutGroup>().transform)
                    {
                        Destroy(child.gameObject);
                    }
                });
                eventTrigger.triggers.Add(entry);

                button.GetComponentInChildren <Text>().text = structure.name;
            }
            gameObject.SetActive(true);
        }