예제 #1
0
    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();
    }
예제 #2
0
        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);
        }
예제 #3
0
 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;
 }
예제 #4
0
 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();
         }
     }
 }
예제 #5
0
    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);
    }
예제 #6
0
 // 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;
 }