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); }
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); }
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]); } }
private static GameObject SelectTowerPrefab(TOWER_TYPE towerType) { switch (towerType) { case TOWER_TYPE.ACID: return(mAcidTowerPrefab); case TOWER_TYPE.GATLING: return(mGatlingTowerPrefab); default: return(null); } }
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) }; }
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); // } }