public Tower GetUpgradeSample(TowerUpgradeDirection direction) { Tower newTower = Duplicate(); newTower.Upgrade(direction); return(newTower); }
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; } }
public virtual void Upgrade(TowerUpgradeDirection direction, Game game) { if (game.Money >= UpgradeCost) { game.Money -= UpgradeCost; Upgrade(direction); } }
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); } }
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(); }