Exemplo n.º 1
0
        /// <summary>
        /// Векторные вычисления
        /// </summary>
        protected virtual void VectorCalculating()
        {
            // если врага нет - ищем врага
            if (_attackedObject == null)
            {
                _attackedObject = GameObjectsTransformFinder
                                  .GetEnemyUnit(transform, _standartRadius / 4, typeOfEnemyChoice);
            }

            // переходим в боевую готовность
            if (_attackedObject != null && !_isFighting)
            {
                _attackedObject.GetComponent <EnemyAbstract>().CallToFight();
                if (!ChangeEnemy())
                {
                    AddToList(_attackedObject); // adding to list
                    _attackedObject.GetComponent <EnemyAbstract>().IncreaseCountOfTurrelFighters(null);
                    //Debug.Log(_attackedObject.name + " => " + gameObject.name);
                }
                //Debug.Log("Воюем");
                _point = _attackedObject.GetComponent <EnemyAbstract>().SwitchPoint();
                CalculatePoint(_point);
                _canRandomWalk = false;
                _isFighting    = true;
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Сменить врага
        /// </summary>
        /// <returns></returns>
        public bool ChangeEnemy()
        {
            _changeEnemyFlag = false;
            if (_isAlive)
            {
                CheckList();
                _newAttackedObject =
                    GameObjectsTransformFinder.GetEnemyUnit(transform,
                                                            _standartRadius, typeOfEnemyChoice);

                if (_newAttackedObject != null &&
                    _attackedObject != null)
                {
                    if (_newAttackedObject.GetComponent <EnemyAbstract>().AttackedObject != null &&
                        _newAttackedObject.GetComponent <EnemyAbstract>().AttackedObject.Equals(gameObject))
                    {
                        _attackedObject.GetComponent <EnemyAbstract>().DecreaseCountOfTurrelFighters(null);
                        _attackedObject = _newAttackedObject;
                        _attackedObject.GetComponent <EnemyAbstract>().IncreaseCountOfTurrelFighters(null);
                        _changeEnemyFlag = true;
                    }
                    else
                    {
                        _enemyList.Remove(_newAttackedObject);
                        _changeEnemyFlag = false;
                    }
                }
                else
                {
                    _changeEnemyFlag = false;
                }
            }
            return(_changeEnemyFlag);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Векторные вычисления
        /// </summary>
        protected override void VectorCalculating()
        {
            enemyTemp = GameObjectsTransformFinder.IsEnemyIntoTarget(transform);
            if (enemyTemp != null && enemyTemp.GetComponent <EnemyAbstract>().IsAlive)
            {
                if (enemyTemp.GetComponent <EnemyAbstract>().
                    EnemyDamage(_parentObject.GetComponent <PlayerAbstract>().gameObject,
                                _parentObject.GetComponent <PlayerAbstract>().PlayerType, _dmgBullet, 1) != 0 &&
                    _countOfPenetrations > 0)
                {
                    //Debug.Log("Снижено");
                    _countOfPenetrations--;
                }
                else
                {
                    if (_isClustered)
                    {
                        _cluster.transform.position = transform.position;
                        CmdInstantiate(_cluster);

                        Destroy(gameObject);
                    }
                    else
                    {
                        Destroy(gameObject);
                    }
                }
            }
        }
Exemplo n.º 4
0
        /// <summary>
        /// Векторные вычисления
        /// </summary>
        protected override void VectorCalculating()
        {
            if (_attackedObject == null)
            {
                _attackedObject = GameObjectsTransformFinder
                                  .GetEnemyUnit(transform, _standartRadius / 4, typeOfEnemyChoice);
            }

            if (_attackedObject != null &&
                !_isFighting)
            {
                if (!ChangeEnemy())
                {
                    AddToList(_attackedObject); // adding to list

                    _distance =
                        Vector3.Distance(gameObject.transform.position,
                                         _attackedObject.transform.position);
                    if (!(_distance <= _maxEdge) || !(_distance > _maxEdge / 4) || !(_countOfAmmo > 0))
                    {
                        _attackedObject.GetComponent <EnemyAbstract>()
                        .IncreaseCountOfTurrelFighters(null);
                    }
                }
                _point         = _attackedObject.GetComponent <EnemyAbstract>().SwitchPoint();
                _canRandomWalk = false;
                _isFighting    = true;
            }
        }
Exemplo n.º 5
0
 public void CmdDead()
 {
     if (!isServer)
     {
         return;            // Выполняем только на сервере
     }
     instantedPlayerReference.NumberOfUnits--;
     GameObjectsTransformFinder.RemoveFromPlayerTransformList(transform);
     RpcClientDeath();
 }
Exemplo n.º 6
0
 /// <summary>
 /// Векторные вычисления
 /// </summary>
 protected virtual void VectorCalculating()
 {
     enemyTemp = GameObjectsTransformFinder.IsEnemyIntoTarget(transform);
     if (enemyTemp != null && enemyTemp.GetComponent <EnemyAbstract>().IsAlive)
     {
         enemyTemp.GetComponent <EnemyAbstract>()
         .EnemyDamage(_parentObject.GetComponent <PlayerAbstract>()
                      .gameObject, _parentObject.GetComponent <PlayerAbstract>().PlayerType, _dmgForCluster, 1);
         Destroy(gameObject);
     }
 }
Exemplo n.º 7
0
 public void CmdDead()
 {
     if (!isServer)
     {
         return;            // Выполняем только на сервере
     }
     GameObject.FindGameObjectWithTag("Core").GetComponent <RespawnWaver>().NumberOfEnemies--;
     GameObjectsTransformFinder
     .RemoveFromEnemyTransformList(transform);
     RpcClientDeath();
 }
Exemplo n.º 8
0
        /// <summary>
        /// Векторные вычисления
        /// </summary>
        protected override void VectorCalculating()
        {
            // если врага нет - ищем врага
            if (_attackedObject == null)
            {
                _attackedObject = GameObjectsTransformFinder
                                  .GetEnemyUnit(transform, _standartRadius / 4, typeOfEnemyChoice);
            }

            if (_attackedObject != null && !_isFighting && mayToCheckForEnemy)
            {
                _isFighting = true;
            }
        }
Exemplo n.º 9
0
        /// <summary>
        /// Проверяем, столкнулся ли враг с башней
        /// </summary>
        /// <param name="collision"></param>
        private void FixedUpdate()
        {
            if (!isServer)
            {
                return;
            }

            enemyIntoTower = GameObjectsTransformFinder.IsEnemyIntoTarget();
            if (enemyIntoTower != null)
            {
                HpTower -= 1;
                Timing.RunCoroutine(RedColorHp());
                enemyIntoTower.GetComponent <EnemyAbstract>().CmdDead();
            }
        }
Exemplo n.º 10
0
 /// <summary>
 /// Векторные вычисления
 /// </summary>
 protected override void VectorCalculating()
 {
     enemyTemp = GameObjectsTransformFinder.IsEnemyIntoTarget(transform);
     if (enemyTemp != null)
     {
         if (_can)
         {
             CmdBurner(_burningTime);
         }
         else if (enemyTemp.GetComponent <EnemyAbstract>().IsAlive)
         {
             enemyTemp.GetComponent <EnemyAbstract>().
             EnemyDamageSafe(playerHelperInstance, typeUnit, _dmgPerSec, 2);
         }
     }
 }
Exemplo n.º 11
0
        /// <summary>
        /// Респаун врага непосредственно
        /// </summary>
        /// v1.01
        private void Instansing()
        {
            GameObject clone = Instantiate(_currentEnemy);

            clone.name = "Enemy" + clone.GetComponent <EnemyAbstract>().EnemyType
                         + "#Power" + clone.GetComponent <EnemyAbstract>().GetPower() + "#" + _numberOfEnemies;
            clone.GetComponent <EnemyAbstract>().EnemyType = clone.name;
            _numberOfEnemies++;
            clone.GetComponent <EnemyAbstract>().TypeOfEnemyChoice
                = GameObjectsTransformFinder.SetRandomTypeOfEnemyChoiceForPlayerUnit();
            NetworkServer.Spawn(clone);
            GameObjectsTransformFinder
            .AddToEnemyTransformList(clone.transform);

            _enemyCountLevels[_instEnemy]--;
            _isMayBeInstanced = false;
            _respawnTime      = (float)rnd.NextDouble() * rnd.Next(1, 4) * _tempRespawnTime;
        }
Exemplo n.º 12
0
        /// <summary>
        /// Векторные вычисления
        /// </summary>
        protected virtual void VectorCalculating()
        {
            if (_attackedObject == null)
            {
                _attackedObject = GameObjectsTransformFinder
                                  .GetPlayerUnit(transform, _radiusOfSearchingPlayerUnit);
            }

            if (_attackedObject != null && !_attackFlag)
            {
                _agent.enabled = true;
                _multiple      = 0.01f;
                _attackFlag    = true;
                _point         = _attackedObject.GetComponent <PlayerAbstract>().SwitchPoint();
                CalculatePoint(_point);
                _attackedObject.GetComponent <PlayerAbstract>().IncreaseCountOfTurrelFighters(gameObject);
                //Debug.Log(_attackedObject.name + " => " + gameObject.name);
            }
        }
Exemplo n.º 13
0
 /// <summary>
 /// Векторные вычисления
 /// </summary>
 protected override void VectorCalculating()
 {
     enemyTemp = GameObjectsTransformFinder.IsEnemyIntoTarget(transform);
     if (enemyTemp != null && enemyTemp.GetComponent <EnemyAbstract>().IsAlive)
     {
         enemyTemp.GetComponent <EnemyAbstract>()
         .EnemyDamage(_parentObject.GetComponent <PlayerAbstract>().gameObject, _parentObject.GetComponent <PlayerAbstract>().PlayerType,
                      rnd.Next(_damage - (_damage / 3), _damage + (_damage / 3)), 1);
         if (_isClustered)
         {
             Destroy(gameObject);
             CmdInstantiate();
         }
         else
         {
             Destroy(gameObject);
         }
         _parentObject.GetComponent <LiteStaticTurrel>().MineCounter--;
     }
 }
Exemplo n.º 14
0
        private void CmdInstantiateObject(string skillString, int currentNumber, GameObject playerHelper, Vector3 pos)
        {
            //Debug.Log(playerHelper.GetComponent<PlayerHelper>());
            //Debug.Log(playerHelper.GetComponent<PlayerHelper>().GetPrefab(currentNumber));

            GameObject objectForInstantiate
                = Instantiate(playerHelper.GetComponent <PlayerHelper>()
                              .GetPrefab(currentNumber), pos, Quaternion.Euler(90, 0, 0));

            objectForInstantiate.GetComponent <PlayerAbstract>().InstantedPlayerReference
                = playerHelper.GetComponent <PlayerHelper>();

            objectForInstantiate.name =
                objectForInstantiate.GetComponent <PlayerAbstract>().PlayerType + "#" + _numberOfUnits;
            DataPlayer.SetNewSkillsOfUnitForInstantiate(skillString, objectForInstantiate, currentNumber);
            objectForInstantiate.GetComponent <PlayerAbstract>().TypeOfEnemyChoice
                = GameObjectsTransformFinder.SetRandomTypeOfEnemyChoiceForPlayerUnit();
            NetworkServer.Spawn(objectForInstantiate);
            GameObjectsTransformFinder
            .AddToPlayerTransformList(objectForInstantiate.transform);
            objectForInstantiate.transform.parent = playerHelper.transform;
        }