public ConfirmationDialogBox(string dataAsset, string text, Vector2 position, Vector2 dimensions, Color colour, string name, float opacity = 1f) : base(dataAsset, text, position, dimensions, colour, name, opacity) { ConfirmButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(-Dimensions.X / 4, Dimensions.Y / 5), new Color(0, 0.318f, 0.49f), new Color(0, 0.71f, 0.988f), "Confirm Button", "Confirm"); CancelButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(Dimensions.X / 4, Dimensions.Y / 5), new Color(0.588f, 0, 0), new Color(1f, 0, 0), "Cancel Button", "Cancel"); }
private void SetUpButtons(ContentManager content) { int buttonPadding = 20; int panelPadding = 10; int numberOfButtons = 4; Panel panel = new Panel( "Sprites/UI/Panels/MenuPanelBackground", new Vector2(ScreenManager.Viewport.Width / 3, ScreenManager.Viewport.Height / 3 + panelPadding + buttonPadding + 60), new Vector2(200 + panelPadding, numberOfButtons * 40 + (numberOfButtons - 1) * buttonPadding + 2 * panelPadding), new Color(0, 0, 0.7f, 1f), "Menu Buttons Panel", 0.6f); AddScreenUIElement(panel); Button newGameButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(ScreenManager.Viewport.Width / 3, ScreenManager.Viewport.Height / 3), Button.defaultColour, Button.highlightedColour, "New Game Button", "New Game"); newGameButton.InteractEvent += NewGameEvent; AddScreenUIElement(newGameButton); // newGameButton.LoadContent(content); // AddUIElement(newGameButton, new Vector2(panel.Dimensions.X / 2, panel.Dimensions.Y / 2)); Button continueButton = new Button( "XML/UI/Buttons/MenuButton", newGameButton.Position + new Vector2(0, newGameButton.Bounds.Height + buttonPadding), Button.defaultColour, Button.highlightedColour, "Continue Button", "Continue"); continueButton.InteractEvent += ContinueEvent; AddScreenUIElement(continueButton); // continueButton.LoadContent(content); // panel.AddUIElementRelativeTo(continueButton, newGameButton, new Vector2(0, newGameButton.Bounds.Height + buttonPadding)); Button settingsButton = new Button( "XML/UI/Buttons/MenuButton", continueButton.Position + new Vector2(0, continueButton.Bounds.Height + buttonPadding), Button.defaultColour, Button.highlightedColour, "Settings Button", "Settings"); settingsButton.InteractEvent += SettingsEvent; AddScreenUIElement(settingsButton); Button exitButton = new Button( "XML/UI/Buttons/MenuButton", settingsButton.Position + new Vector2(0, settingsButton.Bounds.Height + buttonPadding), new Color(0.588f, 0, 0), new Color(1f, 0, 0), "Exit Button", "Exit"); exitButton.InteractEvent += ExitEvent; AddScreenUIElement(exitButton); }
private void SetUpButtons() { PreviousStringButton = new Button( Button.defaultButtonAsset, new Vector2(-Dimensions.X * 0.3f, Dimensions.Y * 0.3f), Button.defaultColour, Button.highlightedColour, "Previous String Button", "Previous"); PreviousStringButton.InteractEvent += PreviousStringEvent; LoadAndAddUIElement(PreviousStringButton); NextStringButton = new Button( Button.defaultButtonAsset, new Vector2(Dimensions.X * 0.3f, Dimensions.Y * 0.3f), Button.defaultColour, Button.highlightedColour, "Next String Button", "Next"); NextStringButton.InteractEvent += NextStringEvent; LoadAndAddUIElement(NextStringButton); }
private void SetUpUI() { MissionImage = new Image( MissionData[CurrentLevel - 1].LevelThumbnailAsset, new Vector2(ScreenManager.Viewport.Width / 3, 2 * ScreenManager.Viewport.Height / 5), 2 * ScreenManager.Viewport.Width / 3, 2 * ScreenManager.Viewport.Height / 3, "Mission Image"); AddScreenUIElement(MissionImage); MissionDescription = new Text( MissionData[CurrentLevel - 1].Description, new Vector2(ScreenManager.Viewport.Width / 3, 5 * ScreenManager.Viewport.Height / 6), 3 * ScreenManager.Viewport.Width / 5, Color.AliceBlue, "Mission Description Text"); AddScreenUIElement(MissionDescription); for (int i = 0; i < maxLevel; i++) { Button button = new Button( "XML/UI/Buttons/MenuButton", new Vector2(5 * ScreenManager.Viewport.Width / 6, ScreenManager.Viewport.Height / 10 + i * 60), Button.defaultColour, Button.highlightedColour, i.ToString(), MissionData[i].Name); button.InteractEvent += LevelInformationEvent; MissionButtons.Add(button); AddScreenUIElement(button); } Button acceptMissionButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(5 * ScreenManager.Viewport.Width / 6, 9 * ScreenManager.Viewport.Height / 10), Button.defaultColour, Button.highlightedColour, "Accept Mission Button", "Start"); acceptMissionButton.InteractEvent += AcceptMissionEvent; AddScreenUIElement(acceptMissionButton); Button backButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(ScreenManager.Viewport.Width / 6, MissionDescription.Position.Y + MissionDescription.TextOrigin.Y + ScreenManager.Viewport.Height / 20), new Color(0.588f, 0, 0), new Color(1f, 0, 0), "Back Button", "Back"); backButton.InteractEvent += BackEvent; AddScreenUIElement(backButton); }
private void DisplayShipInformation(string shipName) { CurrentObjectInfoPanel.Clear(); ShipData shipData = ScreenManager.Content.Load<ShipData>("XML/Ships/" + shipName); if (shipData != null) { Image shipImage = new Image( shipData.TextureAsset, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 3, -CurrentObjectInfoPanel.Dimensions.Y / 4), CurrentObjectInfoPanel.Dimensions.X / 3, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5, shipName + " Image"); CurrentObjectInfoPanel.LoadAndAddUIElement(shipImage); Text name = new Text( shipData.Name, new Vector2(0, -2 * CurrentObjectInfoPanel.Dimensions.Y / 5), Color.LightGreen, "Name"); CurrentObjectInfoPanel.LoadAndAddUIElement(name); name.SetHoverInfoText("Ship Name"); Text armourText = new Text( shipData.Armour.ToString(), new Vector2(0, 4 * name.TextOrigin.Y), Color.White, shipName + " Armour"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(armourText, name); Image armourImage = new Image( "Sprites/UI/Thumbnails/ArmourThumbnail", new Vector2(-5 * armourText.TextOrigin.X / 2, 0), "Armour Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(armourImage, armourText); armourImage.SetHoverInfoText("Armour"); Text hullText = new Text( shipData.Hull.ToString(), new Vector2(0, 4 * armourText.TextOrigin.Y), Color.White, shipName + " Hull"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(hullText, armourText); Image hullImage = new Image( "Sprites/UI/Thumbnails/HullThumbnail", new Vector2(-5 * hullText.TextOrigin.X / 2, 0), new Vector2(1, 1), Color.White, "Hull Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(hullImage, hullText); hullImage.SetHoverInfoText("Hull"); Text massText = new Text( shipData.Mass.ToString(), new Vector2(0, 4 * hullText.TextOrigin.Y), Color.White, shipName + " Mass"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(massText, hullText); Image massImage = new Image( "Sprites/UI/Thumbnails/MassThumbnail", new Vector2(-hullText.TextOrigin.X - 35, 0), new Vector2(1, 1), Color.White, "Mass Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(massImage, massText); massImage.SetHoverInfoText("Mass"); Text weaponSlotsText = new Text( shipData.WeaponHardPoints.Count.ToString(), new Vector2(0, 4 * massText.TextOrigin.Y), Color.White, shipName + " Weapon Slots"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponSlotsText, massText); Image weaponSlotsImage = new Image( "Sprites/UI/Thumbnails/WeaponSlotsThumbnail", new Vector2(-weaponSlotsText.TextOrigin.X - 25, 0), "Weapons Slots Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponSlotsImage, weaponSlotsText); weaponSlotsImage.SetHoverInfoText("Weapon Slots"); Text shipModSlotsText = new Text( shipData.ShipModSlots.ToString(), new Vector2(0, 4 * massText.TextOrigin.Y), Color.White, shipName + " Ship Mods Slot"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(shipModSlotsText, weaponSlotsText); shipModSlotsText.SetHoverInfoText("Ship Mod Slots"); Text descriptionText = new Text( shipData.Description, new Vector2(0, CurrentObjectInfoPanel.Dimensions.Y / 7), 4 * CurrentObjectInfoPanel.Dimensions.X / 5, Color.White, shipName + " Description"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(descriptionText, shipModSlotsText); int cost = shipData.Cost; if (PlayerShip != null) { cost -= PlayerShip.TotalWorth / 2; } string costString = cost.ToString(); Text costText = new Text( costString, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 8, CurrentObjectInfoPanel.Dimensions.Y / 6), Color.White, "Cost"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(costText, descriptionText); Image moneyImage = new Image( "Sprites/UI/Thumbnails/MoneyThumbnail", new Vector2(-costText.TextOrigin.X - 20, 0), new Vector2(1, 1), Color.Cyan, "Cost Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(moneyImage, costText); Button buyButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(costText.TextOrigin.X + CurrentObjectInfoPanel.Dimensions.X / 3, 0), Button.defaultColour, Button.highlightedColour, shipName + " " + costString, "Purchase"); buyButton.InteractEvent += BuyShipEvent; buyButton.EnableAndDisableEvent += SameShipPurchaseActivationEvent; CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(buyButton, costText); } }
private void DisplayShipModInformation(string shipModName) { CurrentObjectInfoPanel.Clear(); ShipModData shipModData = ScreenManager.Content.Load<ShipModData>("XML/Ship Mods/" + shipModName); if (shipModData != null) { Image shieldImage = new Image( shipModData.TextureAsset, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 3, -CurrentObjectInfoPanel.Dimensions.Y / 4), CurrentObjectInfoPanel.Dimensions.X / 6, CurrentObjectInfoPanel.Dimensions.X / 6, shipModName + " Image"); CurrentObjectInfoPanel.LoadAndAddUIElement(shieldImage); Text name = new Text( shipModData.Name, new Vector2(0, -2 * CurrentObjectInfoPanel.Dimensions.Y / 5), Color.Yellow, "Name"); CurrentObjectInfoPanel.LoadAndAddUIElement(name); name.SetHoverInfoText("Ship Mod Name"); Text activeOrPassiveText; if (shipModData.Active) { activeOrPassiveText = new Text( "Active", new Vector2(0, 4 * name.TextOrigin.Y), Color.White, "Active Or Passive Text"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(activeOrPassiveText, name); activeOrPassiveText.SetHoverInfoText("Mod Type"); Text runTimeText = new Text( shipModData.RunTime.ToString(), new Vector2(0, 4 * name.TextOrigin.Y), Color.White, "Run Time Text"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(runTimeText, activeOrPassiveText); runTimeText.SetHoverInfoText("Mod Run Time"); Text coolDownText = new Text( shipModData.Cooldown.ToString(), new Vector2(0, 4 * name.TextOrigin.Y), Color.White, "Cool Down Text"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(coolDownText, runTimeText); coolDownText.SetHoverInfoText("Mod Cool Down"); } else { activeOrPassiveText = new Text( "Passive", new Vector2(0, 4 * name.TextOrigin.Y), Color.White, "Active Or Passive Text"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(activeOrPassiveText, name); activeOrPassiveText.SetHoverInfoText("Mod Type"); } Text descriptionText = new Text( shipModData.Description, new Vector2(0, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5), 4 * CurrentObjectInfoPanel.Dimensions.X / 5, Color.White, shipModName + " Description"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(descriptionText, activeOrPassiveText); Text costText = new Text( shipModData.Cost.ToString(), new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 8, CurrentObjectInfoPanel.Dimensions.Y / 4), Color.White, "Cost"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(costText, descriptionText); Image moneyImage = new Image( "Sprites/UI/Thumbnails/MoneyThumbnail", new Vector2(-costText.TextOrigin.X - 20, 0), new Vector2(1, 1), Color.Cyan, "Cost Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(moneyImage, costText); Button buyButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(costText.TextOrigin.X + CurrentObjectInfoPanel.Dimensions.X / 3, 0), Button.defaultColour, Button.highlightedColour, shipModName + " " + shipModData.Cost, "Purchase"); buyButton.InteractEvent += BuyShipModEvent; buyButton.EnableAndDisableEvent += SameShipModPurchaseActivationEvent; CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(buyButton, costText); } }
private void DisplaySensorInformation(string sensorName) { CurrentObjectInfoPanel.Clear(); SensorData sensorData = ScreenManager.Content.Load<SensorData>("XML/Sensors/" + sensorName); if (sensorData != null) { Image shieldImage = new Image( sensorData.TextureAsset, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 3, -CurrentObjectInfoPanel.Dimensions.Y / 7), CurrentObjectInfoPanel.Dimensions.X / 3, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5, sensorName + " Image"); CurrentObjectInfoPanel.LoadAndAddUIElement(shieldImage); Text name = new Text( sensorData.Name, new Vector2(0, -2 * CurrentObjectInfoPanel.Dimensions.Y / 5), Color.Yellow, "Name"); CurrentObjectInfoPanel.LoadAndAddUIElement(name); name.SetHoverInfoText("Sensor Name"); Text sensorRangeText = new Text( sensorData.Range.ToString(), new Vector2(0, 4 * name.TextOrigin.Y), Color.White, sensorName + " Range"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(sensorRangeText, name); Image sensorRangeImage = new Image( "Sprites/UI/Thumbnails/SensorRangeThumbnail", new Vector2(-2 * sensorRangeText.TextOrigin.X, 0), new Vector2(1, 1), Color.LightGreen, "Range Image"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(sensorRangeImage, sensorRangeText); sensorRangeImage.SetHoverInfoText("Range"); Text descriptionText = new Text( sensorData.Description, new Vector2(0, CurrentObjectInfoPanel.Dimensions.Y / 2), 4 * CurrentObjectInfoPanel.Dimensions.X / 5, Color.White, sensorName + " Description"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(descriptionText, sensorRangeText); int cost = sensorData.Cost; if (PlayerShip.Sensors != null) { cost -= PlayerShip.Sensors.SensorData.Cost / 2; } string costString = cost.ToString(); Text costText = new Text( costString, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 8, CurrentObjectInfoPanel.Dimensions.Y / 5), Color.White, "Cost"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(costText, descriptionText); Image moneyImage = new Image( "Sprites/UI/Thumbnails/MoneyThumbnail", new Vector2(-costText.TextOrigin.X - 20, 0), new Vector2(1, 1), Color.Cyan, "Cost Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(moneyImage, costText); Button buyButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(costText.TextOrigin.X + CurrentObjectInfoPanel.Dimensions.X / 3, 0), Button.defaultColour, Button.highlightedColour, sensorName + " " + costString, "Purchase"); buyButton.InteractEvent += BuySensorEvent; buyButton.EnableAndDisableEvent += SameSensorPurchaseActivationEvent; CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(buyButton, costText); } }
private void DisplayShieldInformation(string shieldName) { CurrentObjectInfoPanel.Clear(); ShieldData shieldData = ScreenManager.Content.Load<ShieldData>("XML/Shields/" + shieldName); if (shieldData != null) { Image shieldImage = new Image( shieldData.TextureAsset, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 3, -CurrentObjectInfoPanel.Dimensions.Y / 7), CurrentObjectInfoPanel.Dimensions.X / 3, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5, new Color(shieldData.Colour), shieldName + " Image"); CurrentObjectInfoPanel.LoadAndAddUIElement(shieldImage); Text name = new Text( shieldData.Name, new Vector2(0, -2 * CurrentObjectInfoPanel.Dimensions.Y / 5), Color.Cyan, "Name"); CurrentObjectInfoPanel.LoadAndAddUIElement(name); name.SetHoverInfoText("Shield Name"); Text strengthText = new Text( shieldData.Strength.ToString(), new Vector2(0, 4 * name.TextOrigin.Y), Color.White, shieldName + " Strength"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(strengthText, name); strengthText.SetHoverInfoText("Strength"); Text rechargePerSecondText = new Text( shieldData.RechargePerSecond.ToString(), new Vector2(0, 4 * strengthText.TextOrigin.Y), Color.White, shieldName + " Recharge Per Second"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(rechargePerSecondText, strengthText); Image rechargePerSecondImage = new Image( "Sprites/UI/Thumbnails/RepairRateThumbnail", new Vector2(-rechargePerSecondText.TextOrigin.X - 25, 0), new Vector2(1, 1), Color.LightGreen, "Recharge Per Second Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(rechargePerSecondImage, rechargePerSecondText); rechargePerSecondImage.SetHoverInfoText("Recharge Per Second"); Text rechargeDelayText = new Text( shieldData.RechargeDelay.ToString(), new Vector2(0, 4 * rechargePerSecondText.TextOrigin.Y), Color.White, shieldName + " Recharge Delay"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(rechargeDelayText, rechargePerSecondText); rechargeDelayText.SetHoverInfoText("Recharge Delay"); Text depletionDelayText = new Text( shieldData.DepletionDelay.ToString(), new Vector2(0, 4 * rechargeDelayText.TextOrigin.Y), Color.White, shieldName + " Depletion Delay"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(depletionDelayText, rechargeDelayText); depletionDelayText.SetHoverInfoText("Depletion Delay"); Text descriptionText = new Text( shieldData.Description, new Vector2(0, CurrentObjectInfoPanel.Dimensions.Y / 6), 4 * CurrentObjectInfoPanel.Dimensions.X / 5, Color.White, shieldName + " Description"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(descriptionText, depletionDelayText); int cost = shieldData.Cost; if (PlayerShip.Shield != null) { cost -= PlayerShip.Shield.ShieldData.Cost / 2; } string costString = cost.ToString(); Text costText = new Text( costString, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 8, CurrentObjectInfoPanel.Dimensions.Y / 5), Color.White, "Cost"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(costText, descriptionText); Image moneyImage = new Image( "Sprites/UI/Thumbnails/MoneyThumbnail", new Vector2(-costText.TextOrigin.X - 20, 0), new Vector2(1, 1), Color.Cyan, "Cost Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(moneyImage, costText); Button buyButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(costText.TextOrigin.X + CurrentObjectInfoPanel.Dimensions.X / 3, 0), Button.defaultColour, Button.highlightedColour, shieldName + " " + costString, "Purchase"); buyButton.InteractEvent += BuyShieldEvent; buyButton.EnableAndDisableEvent += SameShieldPurchaseActivationEvent; CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(buyButton, costText); } }
private void CreatePanelSwitchButton(string panelName, Vector2 buttonPosition) { Button panelButton = new Button( "XML/UI/Buttons/MenuButton", buttonPosition, new Color(0, 0.318f, 0.49f), new Color(0, 0.71f, 0.988f), panelName, panelName); panelButton.InteractEvent += ChangePanelEvent; panelButton.EnableAndDisableEvent += PlayerShipDependentActivationEvent; AddScreenUIElement(panelButton); }
private void DisplayEngineInformation(string engineName) { CurrentObjectInfoPanel.Clear(); EngineData engineData = ScreenManager.Content.Load<EngineData>("XML/Engines/" + engineName); if (engineData != null) { Image shieldImage = new Image( engineData.TextureAsset, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 3, -CurrentObjectInfoPanel.Dimensions.Y / 7), CurrentObjectInfoPanel.Dimensions.X / 3, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5, engineName + " Image"); CurrentObjectInfoPanel.LoadAndAddUIElement(shieldImage); Text name = new Text( engineData.Name, new Vector2(0, -2 * CurrentObjectInfoPanel.Dimensions.Y / 5), Color.Yellow, "Name"); CurrentObjectInfoPanel.LoadAndAddUIElement(name); name.SetHoverInfoText("Engine Name"); Text speedText = new Text( engineData.EngineSpeed.ToString(), new Vector2(0, 4 * name.TextOrigin.Y), Color.White, engineName + " Speed"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(speedText, name); speedText.SetHoverInfoText("Thrust"); string rotateValueString = MathHelper.ToDegrees(engineData.EngineRotateSpeed).ToString(); string trimmedRotateValue = rotateValueString.Length > 3 ? rotateValueString.Substring(0, 4) : rotateValueString; Text rotateSpeedText = new Text( trimmedRotateValue, new Vector2(0, 4 * speedText.TextOrigin.Y), Color.White, engineData + " RotateSpeed"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(rotateSpeedText, speedText); Image rotateSpeedImage = new Image( "Sprites/UI/Thumbnails/RotateSpeedThumbnail", new Vector2(-rotateSpeedText.TextOrigin.X - 25, 0), "Rotate Speed Image"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(rotateSpeedImage, rotateSpeedText); rotateSpeedImage.SetHoverInfoText("Rotate Degrees Per Second"); Text descriptionText = new Text( engineData.Description, new Vector2(0, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5), 4 * CurrentObjectInfoPanel.Dimensions.X / 5, Color.White, engineName + " Description"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(descriptionText, rotateSpeedText); Text costText = new Text( engineData.Cost.ToString(), new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 8, CurrentObjectInfoPanel.Dimensions.Y / 5), Color.White, "Cost"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(costText, descriptionText); Image moneyImage = new Image( "Sprites/UI/Thumbnails/MoneyThumbnail", new Vector2(-costText.TextOrigin.X - 20, 0), new Vector2(1, 1), Color.Cyan, "Cost Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(moneyImage, costText); Button buyButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(costText.TextOrigin.X + CurrentObjectInfoPanel.Dimensions.X / 3, 0), Button.defaultColour, Button.highlightedColour, engineName + " " + engineData.Cost, "Purchase"); buyButton.InteractEvent += BuyEngineEvent; buyButton.EnableAndDisableEvent += EnginePurchaseActivationEvent; CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(buyButton, costText); } }
private void CreateNextMissionButton() { Button nextMissionButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(9 * ScreenManager.Viewport.Width / 10, ScreenManager.Viewport.Height / 20), Color.Green, Color.LightGreen, "Next Mission Button", "Next Mission"); nextMissionButton.InteractEvent += ProceedToNextMissionEvent; nextMissionButton.EnableAndDisableEvent += PlayerShipDependentActivationEvent; AddScreenUIElement(nextMissionButton); }
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 SetUpCurrentShipInformation() { Image shipImage = new Image( "", new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 4, -CurrentObjectInfoPanel.Dimensions.Y / 10), CurrentObjectInfoPanel.Dimensions.X / 3, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5, "Ship Image"); shipImage.EnableAndDisableEvent += PlayerShipDependentActivationEvent; CurrentShipInfoPanel.LoadAndAddUIElement(shipImage, shipImage.Position); Button sellAllButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(0, 2 * CurrentObjectInfoPanel.Dimensions.Y / 5), Button.defaultColour, Button.highlightedColour, "Sell All Button", "Sell All: "); sellAllButton.InteractEvent += SellAllEvent; sellAllButton.EnableAndDisableEvent += PlayerShipDependentActivationEvent; CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(sellAllButton, shipImage); Text loadoutText = new Text( "Ship Loadout", new Vector2(CurrentShipInfoPanel.Dimensions.X / 8, -CurrentObjectInfoPanel.Dimensions.Y / 3), Color.PaleVioletRed, "Ship Loadout Text"); loadoutText.EnableAndDisableEvent += PlayerShipDependentActivationEvent; CurrentShipInfoPanel.LoadAndAddNewTextEntryBelowPrevious(loadoutText); /*for (int i = 0; i < PlayerShip.ShipData.WeaponHardPoints.Count; i++) { if (i < PlayerShip.Turrets.Count) { Image weaponImage = new Image( PlayerShip.Turrets[i].TurretData.TextureAsset, PlayerShip.ShipData.WeaponHardPoints[i] * shipImage.Scale, 15 * shipImage.Scale.X, 15 * shipImage.Scale.Y, "Weapon Image " + i); weaponImage.LoadContent(ScreenManager.Content); CurrentShipInfoPanel.AddUIElementRelativeTo(weaponImage, shipImage); Text weaponText = new Text( PlayerShip.Turrets[i].TurretData.Name, new Vector2(CurrentShipInfoPanel.Dimensions.X / 8, -CurrentObjectInfoPanel.Dimensions.Y / 3), Color.White, "Weapon " + i + " Text"); CurrentShipInfoPanel.LoadAndAddNewTextEntryBelowPrevious(weaponText); Button sellButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(weaponText.TextOrigin.X, 0), Button.defaultColour, Button.highlightedColour, "Weapon " + PlayerShip.Turrets[i].TurretData.Name, "Sell: " + (PlayerShip.Turrets[i].TurretData.Cost / 2).ToString()); sellAllButton.InteractEvent += SellItemEvent; CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(sellButton, weaponText); } else { Image weaponFreeImage = new Image( "Sprites/UI/Panels/Panel", PlayerShip.ShipData.WeaponHardPoints[i] * shipImage.Scale, 5 * shipImage.Scale.X, 5 * shipImage.Scale.Y, Color.Cyan, "Weapon Free Image " + i); weaponFreeImage.SetOpacity(0.3f); CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(weaponFreeImage, shipImage); weaponFreeImage.SetHoverInfoText("Free Weapon Slot"); } }*/ /*for (int i = 0; i < PlayerShip.ShipData.EngineHardPoints.Count; i++) { if (i < PlayerShip.Engines.Count) { Image engineImage = new Image( PlayerShip.Engines[i].EngineData.TextureAsset, PlayerShip.ShipData.EngineHardPoints[i] * shipImage.Scale, 12 * shipImage.Scale.X, 12 * shipImage.Scale.Y, "Engine Image " + i); engineImage.LoadContent(ScreenManager.Content); CurrentShipInfoPanel.AddUIElementRelativeTo(engineImage, shipImage); Text engineText = new Text( PlayerShip.Engines[i].EngineData.Name, new Vector2(CurrentShipInfoPanel.Dimensions.X / 8, -CurrentObjectInfoPanel.Dimensions.Y / 3), Color.White, "Engine " + i + " Text"); CurrentShipInfoPanel.LoadAndAddNewTextEntryBelowPrevious(engineText); Button sellButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(engineText.TextOrigin.X, 0), Button.defaultColour, Button.highlightedColour, "Engine " + PlayerShip.Engines[i].EngineData.Name, "Sell: " + (PlayerShip.Engines[i].EngineData.Cost / 2).ToString()); sellAllButton.InteractEvent += SellItemEvent; CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(sellButton, engineText); } else { Image engineFreeImage = new Image( "Sprites/UI/Panels/Panel", PlayerShip.ShipData.EngineHardPoints[i] * shipImage.Scale, 7 * shipImage.Scale.X, 7 * shipImage.Scale.Y, Color.LightGreen, "Engine Free Image " + i); engineFreeImage.SetOpacity(0.3f); CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(engineFreeImage, shipImage); engineFreeImage.SetHoverInfoText("Free Engine Slot"); } }*/ Image shieldImage = new Image( "", Vector2.Zero, shipImage.Bounds.Width * 2, shipImage.Bounds.Height * 2, Color.White, "Shield Image"); shieldImage.SetOpacity(0.1f); shieldImage.EnableAndDisableEvent += PlayerShipDependentActivationEvent; CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(shieldImage, shipImage); Text shieldText = new Text( "", new Vector2(CurrentShipInfoPanel.Dimensions.X / 8, -CurrentObjectInfoPanel.Dimensions.Y / 3), CurrentShipInfoPanel.Dimensions.X / 4, Color.White, "Shield Text"); shieldText.EnableAndDisableEvent += PlayerShipDependentActivationEvent; CurrentShipInfoPanel.LoadAndAddNewTextEntryBelowPrevious(shieldText); Button sellShieldButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(shieldText.TextOrigin.X, 0), Button.defaultColour, Button.highlightedColour, "Sell Shield Button", "Sell: "); sellShieldButton.InteractEvent += SellItemEvent; sellShieldButton.EnableAndDisableEvent += PlayerShipDependentActivationEvent; // CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(sellShieldButton, shieldText); Image sensorImage = new Image( "", Vector2.Zero, 12 * shipImage.Scale.X, 12 * shipImage.Scale.Y, "Sensor Image"); sensorImage.EnableAndDisableEvent += PlayerShipDependentActivationEvent; CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(sensorImage, shipImage); Text sensorText = new Text( "", new Vector2(CurrentShipInfoPanel.Dimensions.X / 8, -CurrentObjectInfoPanel.Dimensions.Y / 3), CurrentShipInfoPanel.Dimensions.X / 4, Color.White, "Sensor Text"); sensorText.EnableAndDisableEvent += PlayerShipDependentActivationEvent; CurrentShipInfoPanel.LoadAndAddNewTextEntryBelowPrevious(sensorText); Button sellSensorButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(sensorText.TextOrigin.X, 0), Button.defaultColour, Button.highlightedColour, "Sell Sensor Button", "Sell: "); sellSensorButton.InteractEvent += SellItemEvent; sellSensorButton.EnableAndDisableEvent += PlayerShipDependentActivationEvent; // CurrentShipInfoPanel.LoadAndAddUIElementRelativeTo(sellSensorButton, sensorText); }
private void DisplayWeaponInformation(string weaponName) { CurrentObjectInfoPanel.Clear(); TurretData turretData = ScreenManager.Content.Load<TurretData>("XML/Weapons/" + weaponName); if (turretData != null) { Image weaponImage = new Image( turretData.TextureAsset, new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 3, -CurrentObjectInfoPanel.Dimensions.Y / 4), CurrentObjectInfoPanel.Dimensions.X / 4, CurrentObjectInfoPanel.Dimensions.Y / 5, weaponName + " Image"); CurrentObjectInfoPanel.LoadAndAddUIElement(weaponImage); Text name = new Text( turretData.Name, new Vector2(0, -2 * CurrentObjectInfoPanel.Dimensions.Y / 5), new Color(1, 0, 0.17f, 1), "Name"); CurrentObjectInfoPanel.LoadAndAddUIElement(name); name.SetHoverInfoText("Weapon Name"); Text weaponType = new Text( turretData.Type, new Vector2(0, 4 * name.TextOrigin.Y), Color.White, weaponName + " Type"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponType, name); Image weaponTypeImage = new Image( "Sprites/UI/Thumbnails/WeaponType" + turretData.Type, new Vector2(-3 * weaponType.TextOrigin.X / 2, 0), "Weapon Type Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponTypeImage, weaponType); weaponTypeImage.SetHoverInfoText("Weapon Type"); int lengthOfString = (1 / turretData.FireTimer).ToString().Length > 4 ? 4 : (1 / turretData.FireTimer).ToString().Length; Text weaponFireSpeed = new Text( (1 / turretData.FireTimer).ToString().Substring(0, lengthOfString), new Vector2(0, 4 * weaponType.TextOrigin.Y), Color.White, weaponName + " Fire Speed"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponFireSpeed, weaponType); weaponFireSpeed.SetHoverInfoText("Shot Per Second"); Text weaponRange = new Text( turretData.Range.ToString(), new Vector2(0, 4 * weaponFireSpeed.TextOrigin.Y), Color.White, weaponName + " Range"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponRange, weaponFireSpeed); weaponRange.SetHoverInfoText("Range"); Text weaponDamage = new Text( turretData.BulletDamage.ToString(), new Vector2(0, 4 * weaponRange.TextOrigin.Y), Color.White, weaponName + " Damage"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponDamage, weaponRange); Image weaponDamageImage = new Image( "Sprites/UI/Thumbnails/DamageThumbnail", new Vector2(-weaponDamage.TextOrigin.X - 25, 0), new Vector2(1, 1), Color.OrangeRed, "Weapon Damage Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(weaponDamageImage, weaponDamage); weaponDamageImage.SetHoverInfoText("Damage"); Text descriptionText = new Text( turretData.Description, new Vector2(0, CurrentObjectInfoPanel.Dimensions.Y / 6), 4 * CurrentObjectInfoPanel.Dimensions.X / 5, Color.White, weaponName + " Description"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(descriptionText, weaponDamage); Text costText = new Text( turretData.Cost.ToString(), new Vector2(-CurrentObjectInfoPanel.Dimensions.X / 8, CurrentObjectInfoPanel.Dimensions.Y / 5), Color.White, "Cost"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(costText, descriptionText); Image moneyImage = new Image( "Sprites/UI/Thumbnails/MoneyThumbnail", new Vector2(-costText.TextOrigin.X - 20, 0), new Vector2(1, 1), Color.Cyan, "Cost Thumbnail"); CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(moneyImage, costText); Button buyButton = new Button( "XML/UI/Buttons/MenuButton", new Vector2(costText.TextOrigin.X + CurrentObjectInfoPanel.Dimensions.X / 3, 0), Button.defaultColour, Button.highlightedColour, weaponName + " " + turretData.Cost, "Purchase"); buyButton.InteractEvent += BuyWeaponEvent; buyButton.EnableAndDisableEvent += WeaponPurchaseActivationEvent; CurrentObjectInfoPanel.LoadAndAddUIElementRelativeTo(buyButton, costText); } }
private void SetUpOptionsUI() { // Full Screen UI Text isFullScreenText = new Text( "Full Screen", new Vector2(ScreenManager.Viewport.Width / 4, ScreenManager.Viewport.Height / 3), Color.Cyan, "Full Screen Text"); AddScreenUIElement(isFullScreenText); Button isFullScreenButton = new Button( "XML/UI/Buttons/MenuButton", isFullScreenText.Position + new Vector2(2 * ScreenManager.Viewport.Width / 5, 0), Button.defaultColour, Button.highlightedColour, "Change Full Screen Button", ScreenManager.Settings.OptionsData.IsFullScreen.ToString()); isFullScreenButton.InteractEvent += ChangeFullScreenEvent; AddScreenUIElement(isFullScreenButton); // Music Volume UI Text musicVolumeText = new Text( "Music Volume", isFullScreenText.Position + new Vector2(0, ScreenManager.Viewport.Height / 10), Color.Cyan, "Music Volume Text"); AddScreenUIElement(musicVolumeText); Slider musicVolumeSlider = new Slider( ScreenManager.Settings.OptionsData.MusicVolume, "Sprites/UI/Sliders/VolumeSlider", musicVolumeText.Position + new Vector2(2 * ScreenManager.Viewport.Width / 5, 0), new Vector2(1, 1), "Music Volume Slider"); musicVolumeSlider.InteractEvent += ChangeMusicVolumeEvent; AddScreenUIElement(musicVolumeSlider); // Sound Effects UI Text soundEffectsVolumeText = new Text( "Sound Effects Volume", musicVolumeText.Position + new Vector2(0, ScreenManager.Viewport.Height / 10), Color.Cyan, "Sound Effects Volume Text"); AddScreenUIElement(soundEffectsVolumeText); Slider soundEffectsVolumeSlider = new Slider( ScreenManager.Settings.OptionsData.SoundEffectsVolume, "Sprites/UI/Sliders/VolumeSlider", soundEffectsVolumeText.Position + new Vector2(2 * ScreenManager.Viewport.Width / 5, 0), new Vector2(1, 1), "Sound Effects Volume Slider"); soundEffectsVolumeSlider.InteractEvent += ChangeSoundEffectsVolume; AddScreenUIElement(soundEffectsVolumeSlider); }