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); }