//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); }
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; }
//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(); }
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(); }
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; } } } } }
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); } }
public void InitializeSkills() { towerSO = (TowerSO)ScriptableObject.CreateInstance(typeof(TowerSO)); enemiesSO = (EnemiesSO)ScriptableObject.CreateInstance(typeof(EnemiesSO)); }