Example #1
0
    //Init data from Tower scriptable object
    public override void Init(TowerSO towerData)
    {
        base.Init(towerData);

        //Update stats with player upgrades
        speedMultiplayer = towerData.speedMultiplier * (1 + Game.Instance._slowdownIncrease);
        range           *= (1 + Game.Instance._slowdownRangeIncrease);
    }
Example #2
0
 public void OnTowerCreate(TowerSO prefab)
 {
     if (gameState.TryBuy(prefab.buildPrice))
     {
         Instantiate(prefab.towerPrefab, target.transform, false);
         gameObject.SetActive(false);
     }
 }
    public void UpgradeTower()
    {
        TowerSO nextTower = tower.GetNextUpdate();

        Destroy(tower.gameObject);
        tower = null;

        PlaceTower(nextTower);
    }
    //Init tower from Tower scriptable object
    public virtual void Init(TowerSO towerData)
    {
        currentTower   = towerData;
        enemyLayerMask = LayerMask.GetMask("Enemy");
        _type          = towerData.type;
        _buildCost     = towerData.buildCost;
        range          = towerData.range;

        _nextUpgrade = towerData.nextUpgrade;
    }
    public override void Init(TowerSO towerData)
    {
        base.Init(towerData);

        //Update player upgrades for range
        range *= (1 + Game.Instance._archerRangeIncrease);

        //Update player upgrades for damage
        Damage = towerData.damage * (1 + Game.Instance._archerDamageIncrease);

        AttackRate  = towerData.attackRate;
        Projectiles = towerData.projectiles;
    }
Example #6
0
    //Show tower description after selecting it
    private void ShowTowerDescription(TowerSO tower)
    {
        if (enemyPanel.activeSelf)
        {
            CloseEnemyPanel();
        }

        towerImage.sprite      = tower.towerImage;
        shadeTowerImage.sprite = tower.towerImage;
        towerDescription.text  = tower.towerName + ": " + tower.towerDescription;

        towerPanel.SetActive(true);
    }
    //Placing a tower
    public void PlaceTower(TowerSO towerData)
    {
        tower = Instantiate(towerData.towerPrefab, transform).GetComponent <Tower>();

        if (towerData.type == TowerType.ARTILLERY)
        {
            PlayerStats.Instance.ChangeCoinsAmount(towerData.buildCost * (int)(1 - Game.Instance._bombCostDecrease));
        }
        else
        {
            PlayerStats.Instance.ChangeCoinsAmount(towerData.buildCost);
        }
        tower.Init(towerData);

        tower.transform.position = transform.position;
        isAvailable = false;
        DeactivateParticle();
    }
Example #8
0
    private void BuildTower(int index)
    {
        ClosePanel();
        buildBtn.SetActive(false);
        sellBtn.SetActive(true);

        GameObject tower = Instantiate(gameValuesManager.towersSOHolder.Objects[index].towerPrefab, towerHolder);

        mTowerGO = tower;
        mTowerSO = gameValuesManager.towersSOHolder.Objects[index];

        PlayerStats.Coins -= mTowerSO.buildPrice;
        uiManager.UpdateUI();

        TowerScript towerScript = tower.GetComponent <TowerScript>();

        towerScript.mTowerSO    = gameValuesManager.towersSOHolder.Objects[index];
        towerScript.bulletsPool = bulletsPool;
        towerScript.InitializePool();
    }
Example #9
0
 private void UpdateOpenItems()
 {
     if (isOpen)
     {
         if (isBuilding)
         {
             for (int i = 0; i < panelItems.Count; i++)
             {
                 TowerSO towerSO = gameValuesManager.towersSOHolder.Objects[i];
                 if (PlayerStats.Coins < towerSO.buildPrice)
                 {
                     panelItems[i].GetComponent <TowerItem>().buildButton.interactable = false;
                 }
                 else
                 {
                     panelItems[i].GetComponent <TowerItem>().buildButton.interactable = true;
                 }
             }
         }
     }
 }
Example #10
0
    public void ShowTowerBuildPanel()
    {
        if (!isOpen)
        {
            OpenPanel();
            isBuilding = true;


            int towerCount = gameValuesManager.towersSOHolder.Objects.Count;
            int startAngle = -90;


            for (int i = 0; i < towerCount; i++)
            {
                GameObject item = Instantiate(towerItemPrefab, towerItemHolder);
                item.SetActive(false);

                TowerItem towerItem = item.GetComponent <TowerItem>();
                TowerSO   towerSO   = gameValuesManager.towersSOHolder.Objects[i];

                towerItem.towerImage.sprite   = towerSO.towerSprite;
                towerItem.buildPriceText.text = towerSO.buildPrice.ToString();

                if (PlayerStats.Coins < towerSO.buildPrice)
                {
                    towerItem.buildButton.interactable = false;
                }

                int foo = i;

                towerItem.buildButton.onClick.AddListener(() => BuildTower(foo));
                panelItems.Add(item);

                item.SetActive(true);
            }

            PlaceItems(panelItems, startAngle);
        }
    }
Example #11
0
 public void InitializeSkills()
 {
     towerSO   = (TowerSO)ScriptableObject.CreateInstance(typeof(TowerSO));
     enemiesSO = (EnemiesSO)ScriptableObject.CreateInstance(typeof(EnemiesSO));
 }