コード例 #1
0
    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();
    }
コード例 #2
0
    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);
    }
コード例 #3
0
ファイル: Ship.cs プロジェクト: Edgarbarr/SpaceGame
 public Ship(ShipUpgrade upgrade)
 {
     CargoCapacity    = 10;
     CurrentWarpSpeed = 1;
     CurrentPlanet    = new Planet(Planets.PlanetName.Earth);
     Upgrade          = upgrade;
     MaxWarpSpeed     = CalculateMaxWarpSpeed();
     FuelUnits        = 10;
     MaxLightYears    = CalculateMaxLightYears();
 }
コード例 #4
0
 public Ship(ShipUpgrade upgrade, IPlanet planet)
 {
     CargoCapacity    = 10;
     CurrentWarpSpeed = 1;
     CurrentPlanet    = new IPlanet(defaultPlanet.GetPlanetName);
     Upgrade          = upgrade;
     MaxWarpSpeed     = CalculateMaxWarpSpeed();
     FuelUnits        = 10;
     MaxLightYears    = CalculateMaxLightYears();
 }
コード例 #5
0
    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;
    }
コード例 #6
0
    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);
    }
コード例 #7
0
    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();
    }