Esempio n. 1
0
 public void Initialization()
 {
     if (_spawnPoints == null)
     {
         _spawnPoints = GameObject.FindGameObjectsWithTag(TagManager.GetTag(TagType.BonusPoint));
     }
     _spawnInvoker = new TimeRemaining(SpawnBonus, _spawnTime, true);
     _spawnInvoker.AddTimeRemaining();
     _bonuses = new BonusList();
 }
Esempio n. 2
0
        public void SetPanelEndLevelActive(bool isActive)
        {
            var panel = GameObject.FindWithTag(TagManager.GetTag(TagType.PanelEndLevel));

            if (panel == null)
            {
                return;
            }
            panel.transform.GetChild(0).gameObject.SetActive(isActive);
            if (isActive)
            {
                panel.GetComponentInParent <GameMenuBehaviour>().GetEndLevelText();
            }
        }
Esempio n. 3
0
 private void Awake()
 {
     _player        = GameObject.FindGameObjectWithTag(TagManager.GetTag(TagType.Player));
     _timeService   = Services.Instance.TimeService;
     _sizeBlock     = (gameObject.GetComponent <MeshFilter>().sharedMesh.bounds.size.sqrMagnitude); // размер
     _characterData = Data.Instance.Character;
     _positions.Add(gameObject.transform.position);                                                 //позиция головы
     _currentArmor         = _characterData.Armor;
     _baseArmor            = _characterData.Armor;
     _currentSnakeHp       = _characterData.Hp;
     _baseSnakeHp          = _characterData.Hp;
     _damage               = _characterData.Damage;
     _speed                = _characterData.Speed;
     _snakeArmorGeneration = _characterData.RegenerationArmor;
     _ramCooldown          = _characterData.RamCooldown;
 }
Esempio n. 4
0
        protected virtual void HitCheck()
        {
            Collider[] colliders = new Collider[10];
            Physics.OverlapSphereNonAlloc(_transform.position, _meleeHitRange, colliders);

            for (int i = 0; i < colliders.Length; i++)
            {
                if (colliders[i] != null)
                {
                    if (colliders[i].CompareTag(TagManager.GetTag(TagType.Target)))
                    {
                        var mainBuilding = Services.Instance.LevelService.MainBuilds;
                        mainBuilding.GetDamage(_damage);
                        if (_levelService.ActiveEnemies.Contains(this))
                            _levelService.ActiveEnemies.Remove(this);
                        Object.Destroy(_enemyObject);
                        if (_levelService.ActiveEnemies.Count == 0 && Services.Instance.LevelService.IsLevelSpawnEnded)
                        {
                            _levelService.EndLevel();
                        }
                    }
                    else if (colliders[i].CompareTag(TagManager.GetTag(TagType.Player)))
                    {
                        if (_currentHitCooldown == 0)
                        {
                            Services.Instance.LevelService.CharacterBehaviour.SetArmor(_damage);
                            _currentHitCooldown = _hitCooldown;
                        }
                        Services.Instance.LevelService.CharacterBehaviour.RamEnemy(this);
                        _stoping.AddTimeRemaining();
                       
                       
                    }
                    else if (colliders[i].CompareTag(TagManager.GetTag(TagType.Block)))
                    {
                        if (_currentHitCooldown == 0)
                        {
                            Services.Instance.LevelService.CharacterBehaviour.SetDamage(_damage);
                            _currentHitCooldown = _hitCooldown;
                        }
                        _stoping.AddTimeRemaining();
                    }
                }  
            }
        }
Esempio n. 5
0
        public void Collision()
        {
            var tagCollider = Physics.OverlapSphere(transform.position, _radius);

            for (int i = 0; i < tagCollider.Length; i++)
            {
                if (tagCollider[i].CompareTag(TagManager.GetTag(TagType.Bonus)))
                {
                    hasSkill = true;
                    for (int b = 0; b < Services.Instance.LevelService.ActiveBonus.Count; b++)
                    {
                        if (Services.Instance.LevelService.ActiveBonus[b].GetTransform() == tagCollider[i].transform)
                        {
                            Services.Instance.LevelService.ActiveBonus[b].Use();
                        }
                    }
                }
            }
        }
Esempio n. 6
0
        public void Initialization()
        {
            //Инициализация списка спауна
            //Получаем Scriptable Object список спауна
            var enemySpawnList = Data.Instance.LevelData.GetEnemySpawnList(Services.Instance.LevelService.CurrentLevel);
            //Извлекаем из него массив элементов - записей о спауне отдельных врагов
            var singleEnemySpawnDatas = enemySpawnList.Enemies;

            //Сортируем его по таймингу спауна по ворастанию
            singleEnemySpawnDatas = singleEnemySpawnDatas.OrderBy(x => x.SpawnTiming).ToArray();
            //Закидываем это всё в очередь в таком порядке, чтобы запси с ранними таймингами были в голове очереди
            _enemiesToSpawnQueue = new Queue <SingleEnemySpawnData>();
            foreach (var enemySpawnData in singleEnemySpawnDatas)
            {
                _enemiesToSpawnQueue.Enqueue(enemySpawnData);
            }

            //Инициализация точек спауна
            //Создаются массивы точек спауна и их ID соответственно
            GameObject[] spawnPoints   = GameObject.FindGameObjectsWithTag(TagManager.GetTag(TagType.Spawn));
            int[]        spawnPointIds = new int[spawnPoints.Length];
            for (int i = 0; i < spawnPoints.Length; i++)
            {
                string idString = string.Empty;//строка, содержащая все цифры из имени объекта
                foreach (char c in spawnPoints[i].name)
                {
                    if (IsDigit(c))
                    {
                        idString += c;
                    }
                }
                int id = int.Parse(idString);
                spawnPointIds[i] = id;
            }
            //Каждая точка спауна занимает место в массиве _spawnPoints с индексом равным своему ID
            _spawnPoints = new Vector3[spawnPointIds.Max() + 1];
            for (int i = 0; i < spawnPoints.Length; i++)
            {
                _spawnPoints[spawnPointIds[i]] = spawnPoints[i].transform.position;
            }
        }
Esempio n. 7
0
        protected override void HitCheck()
        {
            Collider[] colliders = new Collider[10];
            Physics.OverlapSphereNonAlloc(_transform.position, _meleeHitRange, colliders);

            for (int i = 0; i < colliders.Length; i++)
            {
                if (colliders[i] != null)
                {
                    if (colliders[i].CompareTag(TagManager.GetTag(TagType.Target)))
                    {
                        var mainBuilding = colliders[i].GetComponent <MainBuild>();
                        mainBuilding.GetDamage(_damage);
                    }

                    if (_hp < _spikeThreshold)
                    {
                        if (colliders[i].CompareTag(TagManager.GetTag(TagType.Player)))
                        {
                            Services.Instance.LevelService.CharacterBehaviour.SetArmor(_damage);
                        }
                        else if (colliders[i].CompareTag(TagManager.GetTag(TagType.Block)))
                        {
                            Services.Instance.LevelService.CharacterBehaviour.SetDamage(_damage);
                        }
                    }
                    else
                    {
                        if (colliders[i].CompareTag(TagManager.GetTag(TagType.Player)))
                        {
                            Services.Instance.LevelService.CharacterBehaviour.SetDamage(_damage);
                        }
                        else if (colliders[i].CompareTag(TagManager.GetTag(TagType.Block)))
                        {
                            Services.Instance.LevelService.CharacterBehaviour.SetDamage(_damage + _bonusDamage);
                        }
                    }
                }
            }
        }
Esempio n. 8
0
        public void Move()
        {
            _timeService      = Services.Instance.TimeService;
            _bullet.position += _speed * _bullet.forward * _timeService.DeltaTime();
            Collider[] _collidedObjects = new Collider[30];
            var        tagCollider      = Physics.OverlapSphereNonAlloc(_bullet.transform.position, 3, _collidedObjects);

            for (int i = 0; i < tagCollider; i++)
            {
                if (_collidedObjects[i].CompareTag(TagManager.GetTag(TagType.Enemy)))
                {
                    for (int b = 0; b < Services.Instance.LevelService.ActiveEnemies.Count; b++)
                    {
                        if (Services.Instance.LevelService.ActiveEnemies[b].GetTransform() == _collidedObjects[i].transform)
                        {
                            if (Services.Instance.LevelService.ActiveEnemies[b] is IDamageAddressee ActiveEnemy)
                            {
                                ActiveEnemy.RegisterDamage(_damage, ArmorTypes.None);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 9
0
 public void FindGameObject()
 {
     Target = GameObject.FindGameObjectWithTag(TagManager.GetTag(TagType.Target));
 }
Esempio n. 10
0
 public MainBuild()
 {
     _mainBuildData = Data.Instance.MainBuildData;
     _hp            = _mainBuildData.Hp;
     _build         = GameObject.FindGameObjectWithTag(TagManager.GetTag(TagType.Target));
 }
Esempio n. 11
0
 protected virtual void GetTarget()
 {    
     _target = GameObject.FindWithTag(TagManager.GetTag(TagType.Target)).transform;
 }