Esempio n. 1
0
        public Tower GetUpgradeSample(TowerUpgradeDirection direction)
        {
            Tower newTower = Duplicate();

            newTower.Upgrade(direction);
            return(newTower);
        }
Esempio n. 2
0
        public virtual void Upgrade(TowerUpgradeDirection direction)
        {
            Level         = Level + 1;
            UpgradeCost   = Convert.ToInt32(Math.Ceiling(UpgradeCost * TowerUpgradeConfiguration.UpgradeCostIncreaseRatio));
            DestroyReturn = Convert.ToInt32(Math.Ceiling(DestroyReturn * TowerUpgradeConfiguration.UpgradeCostIncreaseRatio));
            switch (direction)
            {
            case TowerUpgradeDirection.Damage:
                Damage = Damage + TowerUpgradeConfiguration.UpgradeDamageDelta;
                break;

            case TowerUpgradeDirection.Speed:
                Speed = Speed + TowerUpgradeConfiguration.UpgradeSpeedDelta;
                break;

            case TowerUpgradeDirection.Range:
                Range = Range + TowerUpgradeConfiguration.UpgradeRangeDelta;
                break;

            case TowerUpgradeDirection.Frequency:
                Frequency = Frequency + TowerUpgradeConfiguration.UpgradeFrequencyDelta;
                break;

            case TowerUpgradeDirection.BulletNumber:
                BulletNumber    = BulletNumber + TowerUpgradeConfiguration.UpgradeBulletNumberDelta;
                BulletSpanRange = TowerUpgradeConfiguration.UpgradeBulletSpanRangeDelta;
                break;
            }
        }
Esempio n. 3
0
 public virtual void Upgrade(TowerUpgradeDirection direction, Game game)
 {
     if (game.Money >= UpgradeCost)
     {
         game.Money -= UpgradeCost;
         Upgrade(direction);
     }
 }
Esempio n. 4
0
 public override void Upgrade(TowerUpgradeDirection direction, Game game)
 {
     base.Upgrade(direction, game);
     if (direction == TowerUpgradeDirection.Range)
     {
         float radius = Range / 30f;
         TowerInstance.GetComponent <CircleCollider2D>().radius = radius;
         TowerInstance.transform.GetChild(0).localScale         = new Vector3(2f * radius, 2f * radius, 1f);
     }
 }
Esempio n. 5
0
    public void ShowTowerUpgradeInfo(Tower tower, TowerUpgradeDirection direction)
    {
        Tower         upgradedTower = tower.GetUpgradeSample(direction);
        StringBuilder stringBuilder = new StringBuilder();

        stringBuilder.AppendFormat("{0} → {1}\n", tower.Name, upgradedTower.Name);
        stringBuilder.AppendFormat("消耗金錢 {0}\n", tower.UpgradeCost);
        if (tower.Damage != upgradedTower.Damage)
        {
            stringBuilder.AppendFormat("傷害: {0} → {1}\n", tower.Damage, upgradedTower.Damage);
        }
        else
        {
            stringBuilder.AppendFormat("傷害: {0}\n", tower.Damage);
        }
        if (tower.Range != upgradedTower.Range)
        {
            stringBuilder.AppendFormat("射程: {0} → {1}\n", tower.Range, upgradedTower.Range);
        }
        else
        {
            stringBuilder.AppendFormat("射程: {0}\n", tower.Range);
        }
        if (tower.Frequency != upgradedTower.Frequency)
        {
            stringBuilder.AppendFormat("頻率: {0} → {1} 次/秒\n", tower.Frequency, upgradedTower.Frequency);
        }
        else
        {
            stringBuilder.AppendFormat("頻率: {0} 次/秒\n", tower.Frequency);
        }
        if (tower.Speed != upgradedTower.Speed)
        {
            stringBuilder.AppendFormat("初速度: {0} → {1}\n", tower.Speed, upgradedTower.Speed);
        }
        else
        {
            stringBuilder.AppendFormat("初速度: {0}\n", tower.Speed);
        }
        if (tower.BulletNumber != upgradedTower.BulletNumber)
        {
            stringBuilder.AppendFormat("彈數: {0} → {1}\n", tower.BulletNumber, upgradedTower.BulletNumber);
        }
        else
        {
            stringBuilder.AppendFormat("彈數: {0}\n", tower.BulletNumber);
        }
        towerInfoText.text = stringBuilder.ToString();
    }