public void SetAvailableUpgradeData() { // Reset the available upgrade list availableUpgrades = new List <ShipUpgrade>(); foreach (string upgradeId in unlockedUpgrades) { ShipUpgrade upgrade = _upgradeManager.UpgradeData.Find(item => item.UpgradeId == upgradeId); bool allPrerequisitiesMet = true; bool isInstalled = _upgradeManager.InstalledUpgrades.Contains(upgradeId); // Do not show list item if prereqs are not met foreach (string prerequisite in upgrade.Prerequisites) { if (!_upgradeManager.InstalledUpgrades.Contains(prerequisite)) { allPrerequisitiesMet = false; } } if (allPrerequisitiesMet && !isInstalled) { availableUpgrades.Add(upgrade); } } availableUpgradeCountIndicator.SetActive(availableUpgrades.Count > 0); availableUpgradeCountLabel.text = availableUpgrades.Count.ToString(); }
public void InstallUpgrade(ShipUpgrade upgrade) { int upgradeId = Int32.Parse(upgrade.UpgradeId.Split('_')[1]); switch (upgrade.Modifier) { case "weapon": UpdateWeapon(upgradeId); break; case "projectile": UpdateProjectile(upgradeId); break; case "ship": UpdateShip(upgradeId); break; case "defense": UpdateDefense(upgradeId); break; } // Add upgrade to list of installed upgrades and remove bubbles InstalledUpgrades.Add(upgrade.UpgradeId); _gameEventHandler.RemovePoints(upgrade.Cost); }
public Ship(ShipUpgrade upgrade) { CargoCapacity = 10; CurrentWarpSpeed = 1; CurrentPlanet = new Planet(Planets.PlanetName.Earth); Upgrade = upgrade; MaxWarpSpeed = CalculateMaxWarpSpeed(); FuelUnits = 10; MaxLightYears = CalculateMaxLightYears(); }
public Ship(ShipUpgrade upgrade, IPlanet planet) { CargoCapacity = 10; CurrentWarpSpeed = 1; CurrentPlanet = new IPlanet(defaultPlanet.GetPlanetName); Upgrade = upgrade; MaxWarpSpeed = CalculateMaxWarpSpeed(); FuelUnits = 10; MaxLightYears = CalculateMaxLightYears(); }
private void Awake() { weapons.Sort((x, y) => x.WEAPON_ID.CompareTo(y.WEAPON_ID)); GameData.GameStartUp(); ShipUpgrade.GenerateUpgrades(); gameState = GameState.start; current = this; UpdateGameDifficulty(); Time.timeScale = 1; }
public void DeleteUpgrade() { // Delete item string latestUpgradeId = InstalledUpgrades[InstalledUpgrades.Count - 1]; ShipUpgrade latestUpgradedItem = UpgradeData.Find(item => item.UpgradeId == latestUpgradeId); // Find the item that is one tier worse than what the player has string[] splittedString = latestUpgradeId.Split('_'); string modifier = splittedString[0]; int downgradeToItemId = Int32.Parse(splittedString[1]) - 1; // Replace the item with the one that is one tier worse switch (modifier) { case "weapon": UpdateWeapon(downgradeToItemId); break; case "projectile": UpdateProjectile(downgradeToItemId); break; case "ship": UpdateShip(downgradeToItemId); break; case "defense": UpdateDefense(downgradeToItemId); break; } // Refund item _gameEventHandler.AddPoints(latestUpgradedItem.Cost); // Remove it from installed upgrades InstalledUpgrades.RemoveAt(InstalledUpgrades.Count - 1); }
public void CreateUpgradeMenuItem() { // If _menuType happens to be "available" ShipUpgrade thisUpgrade = new ShipUpgrade(); int count = 0; if (_menuType == "installed") { count = _upgradeManager.InstalledUpgrades.Count; ShowHideNextPrevButtons(count); if (count == 0) { ShowNothingAvailable(); return; } purchaseButton.SetActive(false); string upgradeId = _upgradeManager.InstalledUpgrades[_currentUpgradeIndex]; thisUpgrade = _upgradeManager.UpgradeData.Find(item => item.UpgradeId == upgradeId); } if (_menuType == "available") { count = availableUpgrades.Count; ShowHideNextPrevButtons(count); if (count == 0) { ShowNothingAvailable(); return; } purchaseButton.SetActive(true); thisUpgrade = availableUpgrades[_currentUpgradeIndex]; } purchaseButton.GetComponent <Button>().interactable = pointCount >= thisUpgrade.Cost; availableUpgradeTitle.text = thisUpgrade.Title; availableUpgradeDescription.text = thisUpgrade.Description; availableUpgradeCost.text = "Cost: " + thisUpgrade.Cost + " bubbles"; int upgradeNumber = Int32.Parse(thisUpgrade.UpgradeId.Split('_')[1]); switch (thisUpgrade.Modifier) { case "ship": availableUpgradeImage.sprite = shipSprites[upgradeNumber]; break; case "weapon": availableUpgradeImage.sprite = weaponSprites[upgradeNumber]; break; case "projectile": availableUpgradeImage.sprite = projectileSprites[upgradeNumber]; break; case "defense": availableUpgradeImage.sprite = defenseSprites[upgradeNumber]; break; } availableUpgradeImage.SetNativeSize(); }