public void HandleUpgradeEvent(Tower tower, TowerProperty.Level level)
    {
        int cost = 100;

        if (!CanAfford(cost))
        {
            return;
        }
        UpdateToNewLevel(tower, level);
        GameManager.MoneyStats.Decrease(cost);
        AudioManager.PlaySound("Tower Upgrade");
    }
Exemple #2
0
    private void Awake()
    {
        var towerProperty = gameObject.AddComponent <BasicTower>();

        currentLevel   = towerProperty.level;
        possibleLevels = Enum.GetValues(typeof(TowerProperty.Level)).Cast <TowerProperty.Level>().ToList();  //Liste der Level enums

        shootingBehaviour = GetComponent <ShootingBehaviour>();
        shootingBehaviour.SetTowerPropertyReference(towerProperty);
        shootingBehaviour.OnFire += Shoot;

        bullets = GetComponentInChildren <ParticleSystem>();

        tud = GameObject.FindObjectOfType <TowerUpgradeDowngrade>();
    }
    private void AddNewLevelComponent(Tower tower, TowerProperty.Level level)
    {
        switch (level)
        {
        case TowerProperty.Level.BASIC:
            tower.gameObject.AddComponent <BasicTower>();
            break;

        case TowerProperty.Level.ADVANCED:
            tower.gameObject.AddComponent <AdvancedTower>();
            break;

        case TowerProperty.Level.EXPERT:
            tower.gameObject.AddComponent <ExpertTower>();
            break;

        default:
            break;
        }
        TowerProperty newComponent = tower.gameObject.GetComponent <TowerProperty>();

        tower.shootingBehaviour.SetTowerPropertyReference(newComponent);
    }
 private void UpdateToNewLevel(Tower tower, TowerProperty.Level level)
 {
     tower.currentLevel = level;
     DestroyCurrentLevelComponent(tower);
     AddNewLevelComponent(tower, level);
 }
 public void HandleDowngradeEvent(Tower tower, TowerProperty.Level level)
 {
     UpdateToNewLevel(tower, level);
     GameManager.MoneyStats.Increase(100);
     AudioManager.PlaySound("Tower Downgrade");
 }