public void SelectTower(int index) { UIManager.instance.RegisterUIClick(); TowerData.Level selectedTower = GameData.instance.GetCurrentLevel().towers[index]; // Calculate cost for new tower int towerCost = (int)selectedTower.GetProperty(GameData.GameProperies.COST); if (towerCost == 0) { towerCost = 100; } // If there are enough money to build the tower, deduct them if (Currency.instance.UseCoins(towerCost)) { // Build the tower GameObject towerObject = Instantiate(selectedTower.tower.GetPrefab(), selectedPlane.transform.position, Quaternion.identity) as GameObject; Tower tower = towerObject.GetComponent <Tower>(); tower.transform.parent = towersRoot; selectedPlane.tag = Grid.PLANE_NO_HOVER; // Place the tower on the grid GamePlay.instance.activeTowers.Add(tower); } HideBuildTowerUI(); }
public Boolean BuildTower(int index, double[] pos) { /** * index - tower type eg: 0 means gun tower * position - where to build tower */ UIManager.instance.RegisterUIClick(); // set screen Position Vector3 Position = Vector3.zero; Position.x = (float)pos [0]; Position.y = 0.0f; Position.z = (float)pos [1]; TowerData.Level selectedTower = GameData.instance.GetCurrentLevel().towers [index]; // Calculate cost for new tower int towerCost = (int)selectedTower.GetProperty(GameData.GameProperies.COST); if (towerCost == 0) { towerCost = 100; } // If there are enough money to build the tower, deduct them if (Currency.instance.UseCoins(towerCost)) { // Build the tower GameObject towerObject = Instantiate(selectedTower.tower.GetPrefab(), Position, Quaternion.identity) as GameObject; String posStr = ""; posStr += (int)pos [0]; posStr += ","; posStr += (int)pos [1]; gameObjMap [posStr] = towerObject; Tower tower = towerObject.GetComponent <Tower> (); tower.transform.parent = towersRoot; tower.level = 1; // selectedPlane.tag = Grid.PLANE_NO_HOVER; // Place the tower on the grid GamePlay.instance.activeTowers.Add(tower); int neg_value = -towerCost; Debug.Log("{\t\"Type\": \"Tower\",\t\"TowerName\": \"" + selectedTower.name + "\",\t\"TowerIndex\": " + selectedTower.index + ",\t\"Level\": \"1,1\",\t\"Position\": \"" + posStr + "\",\t\"Event\": \"Built\",\t\"Money\": " + neg_value + ",\t\"Time\": " + (int)Time.time + "}, "); Collector.Instance.spendMoney += neg_value; return(true); } return(false); }
public override void Load(string type, int level) { TowerData.Level baseTower = GameData.instance.GetTower(type, level); damage = baseTower.damage; hp = maxHp = baseTower.hp; armor = baseTower.armor; range = baseTower.range; rateOfFire = baseTower.rateOfFire; coins = baseTower.cost; armorPenetration = baseTower.effect; healTime = baseTower.rebootTime; flying = baseTower.tower.air; }
void GenerateUI(List <TowerData.Level> availableTowers) { for (int i = 0; i < availableTowers.Count; i++) { TowerData.Level towerInstance = GameData.instance.GetTower(availableTowers[i].tower.name, 0); if (towerInstance != null) { GameObject availableTowerGO = towerInstance.tower.GetPrefab(); Tower availableTower = availableTowerGO.GetComponent <Tower>(); towerButtons[i].Activate(availableTower.sprite, i, towerInstance.cost); } else { towerButtons[i].Deactivate(); } } }
protected virtual void Start() { if (properties == null) { baseTower = GameData.instance.GetTower(type, level); TowerProperties baseProperties = new TowerProperties(); baseProperties.Load(type, level); properties = new TowerPropertiesQueue(); properties.Initialize(baseProperties, Time.time); } SetRange(); online = true; //assign the towerRange to the sphere collider radius this.GetComponent <SphereCollider>().radius = 2 * (float)properties.active.range; extradamage = 0; nextFireTime = Time.time + (float)properties.active.rateOfFire; healthBar = UIManager.instance.GetHealthBar(); healthBar.UpdateName("Tower: " + type); healthBar.UpdateGUI(transform.position, properties.active.hp / properties.active.maxHp, 4); }
// Use this for initialization void Start() { TowerData.Level tower = GameData.instance.GetTower(type, level); splashArea = tower.GetSpecialProperty(GameData.GameProperies.EFFECT); this.GetComponent <SphereCollider> ().radius = (float)splashArea; }