Beispiel #1
0
    public static void PurchaseTower(TOWER_TYPE type, TOWER_POSITION pos)
    {
        if (GameManager.isBreakInProgress())
        {
            switch (pos)
            {
            case TOWER_POSITION.NORTHEAST:
                instance.BuyTower(instance.bulletTowerCost, instance.FindTowerByPosition(pos), type);
                break;

            case TOWER_POSITION.NORTHWEST:
                instance.BuyTower(instance.bulletTowerCost, instance.FindTowerByPosition(pos), type);
                break;

            case TOWER_POSITION.SOUTHEAST:
                instance.BuyTower(instance.bulletTowerCost, instance.FindTowerByPosition(pos), type);
                break;

            case TOWER_POSITION.SOUTHWEST:
                instance.BuyTower(instance.bulletTowerCost, instance.FindTowerByPosition(pos), type);
                break;

            default:
                break;
            }
        }
    }
 public tower_stats(TOWER_TYPE tType, float fRate, GameObject tPrefab, GameObject bPrefab, int nBullets, int bDamage)
 {
     type         = tType;
     fireRate     = fRate;
     towerPrefab  = tPrefab;
     bulletPrefab = bPrefab;
     numBullets   = nBullets;
     damage       = bDamage;
 }
    void EquipTowers(TOWER_TYPE type, int upgradeLevel)
    {
        tower_stats stats = upgradePaths[type][upgradeLevel];

        leftTower  = Instantiate(stats.towerPrefab, transform.position + leftTowerOffset, Quaternion.identity);
        rightTower = Instantiate(stats.towerPrefab, transform.position + rightTowerOffset, Quaternion.identity);
        SetStats(leftTower, stats);
        SetStats(rightTower, stats);
    }
Beispiel #4
0
        public static void BuildTower(TOWER_TYPE towerType, Vector3 pos)
        {
            Vector3 towerPos = pos;

            towerPos.y = pos.y - DataConfigure.TOWER_SWITCH_OFFSET_Y + mTowerInstanceOffsetY;
            GameObject selectTower = SelectTowerPrefab(towerType);

            Instantiate(selectTower, towerPos, selectTower.transform.rotation);
        }
Beispiel #5
0
    private void BuyTower(int cost, TowerData data, TOWER_TYPE type)
    {
        if (GameManager.isBreakInProgress())
        {
            if (CanAfford(cost))
            {
                gold = (int)Mathf.Clamp(gold - cost, 0, Mathf.Infinity);

                DeActivateTower(data.pos);
                ActivateTower(data.pos, type);
            }
        }
    }
    void UpgradeTower(TOWER_TYPE type)
    {
        int upgradeCost = 100;
        int maxLevel    = upgradePaths[type].Count - 1;

        if (upgradeLevels[type] < maxLevel && money >= upgradeCost)
        {
            money -= upgradeCost;
            upgradeLevels[type]++;
            Destroy(leftTower);
            Destroy(rightTower);
            EquipTowers(type, upgradeLevels[type]);
        }
    }
Beispiel #7
0
        private static GameObject SelectTowerPrefab(TOWER_TYPE towerType)
        {
            switch (towerType)
            {
            case TOWER_TYPE.ACID:
                return(mAcidTowerPrefab);

            case TOWER_TYPE.GATLING:
                return(mGatlingTowerPrefab);

            default:
                return(null);
            }
        }
Beispiel #8
0
 public void SetStatus(Vector3 pos, TOWER_TYPE type, float attack, int range, int tier, float delay, CubeManager basetile)
 {
     this.transform.position = pos;
     this.type        = type;
     this.attackPoint = attack;
     this.range       = range;
     Tier             = tier;
     this.delay       = delay;
     if (type == TOWER_TYPE.WIND)
     {
         this.delay *= 0.5f;
     }
     if ((int)type == (int)basetile.m_Type)
     {
         OnSameTile();
     }
     this.BaseTile = basetile;
 }
    // Start is called before the first frame update
    void Start()
    {
        QualitySettings.vSyncCount = 1;
        placed           = TOWER_TYPE.NULL;
        lastUpgradedTime = Time.time;

        upgradeLevels[TOWER_TYPE.BASIC]   = 0;
        upgradeLevels[TOWER_TYPE.SHOTGUN] = 0;
        upgradeLevels[TOWER_TYPE.SNIPER]  = 0;
        upgradeLevels[TOWER_TYPE.DOUBLE]  = 0;

        hotkeys["1"] = TOWER_TYPE.BASIC;
        hotkeys["2"] = TOWER_TYPE.SHOTGUN;
        hotkeys["3"] = TOWER_TYPE.SNIPER;
        hotkeys["4"] = TOWER_TYPE.DOUBLE;

        upgradePaths[TOWER_TYPE.BASIC] = new List <tower_stats> {
            new tower_stats(TOWER_TYPE.BASIC, .1f, basicTower, basicBullet, 1, 2),
            new tower_stats(TOWER_TYPE.BASIC, .1f, basicTower, basicBullet, 1, 4),
            new tower_stats(TOWER_TYPE.BASIC, .05f, basicTower, basicBullet, 1, 5)
        };

        upgradePaths[TOWER_TYPE.SHOTGUN] = new List <tower_stats> {
            new tower_stats(TOWER_TYPE.SHOTGUN, .15f, shottyTower, shottyBullet, 3, 1),
            new tower_stats(TOWER_TYPE.SHOTGUN, .12f, shottyTower, shottyBullet, 5, 2),
            new tower_stats(TOWER_TYPE.SHOTGUN, .1f, shottyTower, shottyBullet, 7, 4)
        };

        upgradePaths[TOWER_TYPE.SNIPER] = new List <tower_stats> {
            new tower_stats(TOWER_TYPE.SNIPER, .2f, sniperTower, sniperBullet, 1, 5),
            new tower_stats(TOWER_TYPE.SNIPER, .2f, sniperTower, sniperBullet, 1, 20),
            new tower_stats(TOWER_TYPE.SNIPER, .2f, sniperTower, sniperBullet, 1, 50)
        };

        upgradePaths[TOWER_TYPE.DOUBLE] = new List <tower_stats> {
            new tower_stats(TOWER_TYPE.DOUBLE, .05f, doubleTower, doubleBullet, 1, 2),
            new tower_stats(TOWER_TYPE.DOUBLE, .05f, doubleTower, doubleBullet, 1, 4),
            new tower_stats(TOWER_TYPE.DOUBLE, .025f, doubleTower, doubleBullet, 1, 5)
        };
    }
Beispiel #10
0
    private void ActivateTower(TOWER_POSITION pos, TOWER_TYPE type)
    {
        TowerData targetTower;

        targetTower.pos         = TOWER_POSITION.NULL;
        targetTower.bulletTower = null;

        foreach (TowerData data in towerDatas)
        {
            if (pos == data.pos)
            {
                targetTower = data;
            }
        }

        if (targetTower.pos != TOWER_POSITION.NULL)
        {
            if (type == TOWER_TYPE.BULLET_TOWER)
            {
                targetTower.bulletTower.gameObject.SetActive(true);
            }
        }
    }
    // Update is called once per frame

    void Update()
    {
        Vector3 pos = transform.position;

        moneyText.text = "$ " + money.ToString();

        //use this to see if we are moving diagonally, and then slow down
        int count = 0;

        //no movement, deccelerate
        if (!Input.GetKey("up") || !Input.GetKey("left") || !Input.GetKey("down") || !Input.GetKey("right"))
        {
            velocity /= 2f;
        }

        //accelerate
        if (Input.GetKey("up"))
        {
            velocity.y += acceleration * Time.deltaTime;
            if (velocity.y > max_velocity)
            {
                velocity.y = max_velocity;
            }
            count++;
        }
        if (Input.GetKey("down"))
        {
            velocity.y -= acceleration * Time.deltaTime;
            if (velocity.y < -max_velocity)
            {
                velocity.y = -max_velocity;
            }
            count++;
        }
        if (Input.GetKey("right"))
        {
            velocity.x += acceleration * Time.deltaTime;
            if (velocity.x > max_velocity)
            {
                velocity.x = max_velocity;
            }
            count++;
        }
        if (Input.GetKey("left"))
        {
            velocity.x -= acceleration * Time.deltaTime;
            if (velocity.x < -max_velocity)
            {
                velocity.x = -max_velocity;
            }
            count++;
        }

        //move
        if (count > 1)
        {
            transform.position += velocity / 1.4f;
        }
        else
        {
            transform.position += velocity;
        }

        //bounds
        Vector3 clipped = transform.position;

        if (clipped.x > MAX_X)
        {
            clipped.x = MAX_X;
        }
        if (clipped.y > MAX_Y)
        {
            clipped.y = MAX_Y;
        }
        if (clipped.x < MIN_X)
        {
            clipped.x = MIN_X;
        }
        if (clipped.y < MIN_Y)
        {
            clipped.y = MIN_Y;
        }
        transform.position = clipped;

        foreach (string hotkey in hotkeys.Keys)
        {
            if (Input.GetKey(hotkey) && placed == TOWER_TYPE.NULL)
            {
                TOWER_TYPE type = hotkeys[hotkey];
                placed = type;
                EquipTowers(type, upgradeLevels[type]);
            }
        }

        if (Input.GetKey("u") && placed != TOWER_TYPE.NULL && (Time.time - lastUpgradedTime > 2.0f))
        {
            UpgradeTower(placed);
            lastUpgradedTime = Time.time;
        }

        if (Input.GetKey("space") && placed != TOWER_TYPE.NULL)
        {
            Destroy(leftTower);
            Destroy(rightTower);
            placed = TOWER_TYPE.NULL;
        }

        if (placed != TOWER_TYPE.NULL)
        {
            rightTower.transform.position = transform.position + rightTowerOffset;
            leftTower.transform.position  = transform.position + leftTowerOffset;
        }

        //SHOOTING
        // if (Input.GetKey ("z") && (next_fire < 0 || Time.time > next_fire)) {
        //     next_fire = Time.time + fire_rate;
        //     Vector3 main_bullet_pos = transform.position;
        //     main_bullet_pos.y += .5f;
        //     Instantiate(mainGunProj, main_bullet_pos, Quaternion.identity);
        // }
    }