Пример #1
0
 public void CancelPlacingTower()
 {
     Destroy(_currentTowerGO);
     _currentTowerGO     = null;
     _curTowerController = null;
     TowerPlacementState = TowerPlacementState.NotPlacingTower;
 }
Пример #2
0
 public override void Initialize(TowerController towerController)
 {
     base.Initialize(towerController);
     TowerTargetType = TowerTargetType.NoTarget;
     _freezeDuration = TowerController.TowerProperties.FreezeDuration;
     _towerPosition  = towerController.transform.position;
 }
Пример #3
0
        public void InitializeUpgrades(TowerController controller)
        {
            var towerProperties = controller.TowerProperties;

            _upgrades[0] = TowerUpgrade.GetNewUpgrade(towerProperties.TowerUpgradePropertiesPath1);
            _upgrades[1] = TowerUpgrade.GetNewUpgrade(towerProperties.TowerUpgradePropertiesPath2);
        }
Пример #4
0
 public override void PurchaseUpgrade(TowerController towerController)
 {
     if (towerController.TowerAttack is IUpgradeWeapon weaponUpgrade)
     {
         base.PurchaseUpgrade(towerController);
         weaponUpgrade.SetWeapon(Weapon);
     }
     else
     {
         Debug.LogWarning("Warning: TowerAttack does not implement IUpgradeWeapon interface.",
                          towerController.gameObject);
     }
 }
Пример #5
0
 public override void PurchaseUpgrade(TowerController towerController)
 {
     if (towerController.TowerAttack is IUpgradeRange rangeUpgrade)
     {
         rangeUpgrade.SetRange(RangeValue);
         base.PurchaseUpgrade(towerController);
     }
     else
     {
         Debug.LogWarning("Warning: TowerAttack does not implement IUpgradeRange interface.",
                          towerController.gameObject);
     }
 }
Пример #6
0
 public override void PurchaseUpgrade(TowerController towerController)
 {
     if (towerController.TowerAttack is IUpgradeDuration durationUpgrade)
     {
         base.PurchaseUpgrade(towerController);
         durationUpgrade.SetDuration(DurationValue);
     }
     else
     {
         Debug.LogWarning("Warning: TowerAttack does not implement IUpgradeDuration interface.",
                          towerController.gameObject);
     }
 }
Пример #7
0
 public override void PurchaseUpgrade(TowerController towerController)
 {
     if (towerController.TowerAttack is IUpgradeFrequency frequencyUpgrade)
     {
         base.PurchaseUpgrade(towerController);
         frequencyUpgrade.SetFrequency(FrequencyValue);
     }
     else
     {
         Debug.LogWarning("Warning: TowerAttack does not implement IUpgradeFrequency interface.",
                          towerController.gameObject);
     }
 }
Пример #8
0
 private void InitializeControllerValues()
 {
     if (Instance == null)
     {
         Instance = this;
     }
     else
     {
         Destroy(gameObject);
         return;
     }
     TowerPlacementState = TowerPlacementState.NotPlacingTower;
     _curTowerController = null;
 }
Пример #9
0
 public virtual void Initialize(TowerController towerController)
 {
     TowerController     = towerController;
     TowerPosition       = TowerController.transform.position;
     _attackCooldownTime = new WaitForSeconds(towerController.TowerProperties.AttackCooldownTime);
     TowerTargetType     = TowerTargetType.First;
     _detectionRadiusGO  = TowerController.transform.Find("DetectionRadius").gameObject;
     _detectionCollider  = _detectionRadiusGO.GetComponent <CircleCollider2D>();
     _towerBloonDetector = _detectionRadiusGO.GetComponent <TowerBloonDetector>();
     if (_detectionCollider == null)
     {
         Debug.LogWarning("Warning: could not get Collider2D component on the DetectionRadius GameObject.",
                          TowerController);
     }
     SetRange(TowerController.TowerProperties.Range);
 }
Пример #10
0
        private void Update()
        {
            if (IsPlacingTower)
            {
                _currentTowerGO.transform.position = InputController.TowerPlacementPosition;
            }

            if (TryPlaceTower)
            {
                OnTowerPlaced?.Invoke(_curTowerController);
                TowerPlacementState = TowerPlacementState.NotPlacingTower;
                _gameController.DecrementMoney(_curTowerController.TowerProperties.Cost);
                _curTowerController = null;
                _currentTowerGO     = null;
            }
        }
Пример #11
0
 private void OnTowerPlaced(TowerController towerController)
 {
     _collider.isTrigger = true;
     OnHideRangeIndicator?.Invoke();
     enabled = false;
 }
Пример #12
0
 private void SpawnTower(TowerProperties tower)
 {
     _currentTowerGO     = Instantiate(_baseTowerPrefab, Vector3.zero, Quaternion.identity);
     _curTowerController = _currentTowerGO.GetComponent <TowerController>();
     _curTowerController.InitializeTower(tower);
 }
Пример #13
0
 public virtual void PurchaseUpgrade(TowerController towerController)
 {
     IsPurchased = true;
     GameController.Instance.DecrementMoney(Cost);
     towerController.IncreaseTotalTowerCost(Cost);
 }
Пример #14
0
 public override void Initialize(TowerController towerController)
 {
     base.Initialize(towerController);
     _projectile        = TowerController.TowerProperties.ProjectilePrefab;
     _numberProjectiles = TowerController.TowerProperties.NumberProjectiles;
 }