private void CreateAndPopulateShipModPanel(string panelName, Vector2 buttonPosition)
        {
            Panel panel = new Panel(
                "Sprites/UI/Panels/MenuPanelBackground",
                new Vector2(ScreenManager.Viewport.Width / 3, 21 * ScreenManager.Viewport.Height / 40),
                new Vector2(3 * ScreenManager.Viewport.Width / 5, 17 * ScreenManager.Viewport.Height / 20),
                Color.White,
                panelName + " Panel",
                0);
            UpgradePanels.Add(panelName, panel);

            Button modTypeSwitchButton = new Button(
                "XML/UI/Buttons/MenuButton",
                new Vector2(-panel.Dimensions.X / 3, -panel.Dimensions.Y / 2),
                Button.defaultColour,
                Button.highlightedColour,
                "Ship Mods/Offensive",
                "Offensive");
            modTypeSwitchButton.InteractEvent += ChangePanelEvent;
            panel.LoadAndAddUIElement(modTypeSwitchButton, modTypeSwitchButton.Position);

            modTypeSwitchButton = new Button(
                "XML/UI/Buttons/MenuButton",
                new Vector2(0, -panel.Dimensions.Y / 2),
                Button.defaultColour,
                Button.highlightedColour,
                "Ship Mods/Defensive",
                "Defensive");
            modTypeSwitchButton.InteractEvent += ChangePanelEvent;
            panel.LoadAndAddUIElement(modTypeSwitchButton, modTypeSwitchButton.Position);
            AddScreenUIElement(modTypeSwitchButton);

            modTypeSwitchButton = new Button(
                "XML/UI/Buttons/MenuButton",
                new Vector2(panel.Dimensions.X / 3, -panel.Dimensions.Y / 2),
                Button.defaultColour,
                Button.highlightedColour,
                "Ship Mods/Utility",
                "Utility");
            modTypeSwitchButton.InteractEvent += ChangePanelEvent;
            panel.LoadAndAddUIElement(modTypeSwitchButton, modTypeSwitchButton.Position);
            AddScreenUIElement(modTypeSwitchButton);

            CreateAndPopulatePanel("Ship Mods/Defensive", buttonPosition, false);
            CreateAndPopulatePanel("Ship Mods/Offensive", buttonPosition, false);
            CreateAndPopulatePanel("Ship Mods/Utility", buttonPosition, false);

            CreatePanelSwitchButton(panelName, buttonPosition);
            AddScreenUIElement(panel);
        }
        private void CreateAndPopulatePanel(string panelName, Vector2 buttonPosition, bool createSwitchButton = true)
        {
            Panel panel = new Panel(
                "Sprites/UI/Panels/MenuPanelBackground",
                new Vector2(ScreenManager.Viewport.Width / 3, 21 * ScreenManager.Viewport.Height / 40),
                new Vector2(3 * ScreenManager.Viewport.Width / 5, 17 * ScreenManager.Viewport.Height / 20),
                Color.White,
                panelName + " Panel");
            UpgradePanels.Add(panelName, panel);

            // Populate panel here
            DirectoryInfo directory = new DirectoryInfo(ScreenManager.Content.RootDirectory + "/XML/" + panelName);
            if (directory.Exists)
            {
                FileInfo[] files = directory.GetFiles("*.xnb*");

                int yDimensions = 4;
                int xDimensions = 8;
                for (int y = 0; y < yDimensions; y++)
                {
                    for (int x = 0; x < xDimensions; x++)
                    {
                        if (y * xDimensions + x < files.Length)
                        {
                            string key = Path.GetFileNameWithoutExtension(files[y * xDimensions + x].Name);
                            if (panelName != "Shields")
                            {
                                GameObjectData gameObjectData = ScreenManager.Content.Load<GameObjectData>("XML/" + panelName + "/" + key);
                                Image objectImage = new Image(
                                    gameObjectData.TextureAsset,
                                    new Vector2(-2 * panel.Dimensions.X / 5 + x * panel.Dimensions.X / (xDimensions + 1), -2 * panel.Dimensions.Y / 5 + y * panel.Dimensions.Y / yDimensions),
                                    panel.Dimensions.X / (2 * xDimensions + 1),
                                    panel.Dimensions.Y / (2 * yDimensions),
                                    panelName + "/" + key);
                                objectImage.InteractEvent += DisplayShopObjectInformation;
                                panel.LoadAndAddUIElement(objectImage);
                                objectImage.SetHoverInfoText(gameObjectData.Name);
                            }
                            else
                            {
                                ShieldData shieldData = ScreenManager.Content.Load<ShieldData>("XML/" + panelName + "/" + key);
                                Image objectImage = new Image(
                                    shieldData.TextureAsset,
                                    new Vector2(-2 * panel.Dimensions.X / 5 + x * panel.Dimensions.X / xDimensions, -2 * panel.Dimensions.Y / 5 + y * panel.Dimensions.Y / yDimensions),
                                    panel.Dimensions.X / (2 * xDimensions),
                                    panel.Dimensions.Y / (2 * yDimensions),
                                    new Color(shieldData.Colour),
                                    panelName + "/" + key);
                                objectImage.InteractEvent += DisplayShopObjectInformation;
                                panel.LoadAndAddUIElement(objectImage);
                                objectImage.SetHoverInfoText(shieldData.Name);
                            }
                        }
                    }
                }
            }

            if (createSwitchButton)
            {
                CreatePanelSwitchButton(panelName, buttonPosition);
            }

            AddScreenUIElement(panel);
        }