Esempio n. 1
0
 public void Explode()
 {
     Exploded?.Invoke();
     trail.Cancel();
     AddToParent(new Explosion(Position, 20, 0.25));
     Destroy();
 }
Esempio n. 2
0
        public void Accelerate(int delta)
        {
            // If the car is dead, fire Exploded event.
            if (carIsDead)
            {
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
            }
            else
            {
                CurrentSpeed += delta;

                // Almost dead?
                if (10 == MaxSpeed - CurrentSpeed)
                {
                    AboutToBlow?.Invoke(this, new CarEventArgs("Careful buddy!  Gonna blow!"));
                }

                // Still OK!
                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 3
0
 //Implement the Accelerate() method to invoke the delegate's
 //invocation list under the correct circumstances.
 public void Accelerate(int delta)
 {
     //if car is "dead" fire exploded event
     if (IsCarDead)
     {
         Exploded?.Invoke("Sorry, this car is dead!");
     }
     else
     {
         currentSpeed += delta;
         //car is almost dead
         if (10 == MaxSpeed - currentSpeed)
         {
             AboutToBlow?.Invoke("Careful buddy! Gonna blow!");
         }
         if (currentSpeed >= MaxSpeed)
         {
             IsCarDead = true;
         }
         else
         {
             Console.WriteLine($"CurrentSpeed: {currentSpeed}");
         }
     }
 }
        public void Accelerate(int delta)
        {
            if (carIsDead)
            {
                // Also, you can do like follows using null conditional operator
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this CarWithGenericEventHandle is dead..."));
            }
            else
            {
                CurrentSpeed += delta;

                // Also, you can do like follows using null conditional operator
                if (10 == (MaxSpeed - CurrentSpeed))
                {
                    AboutToBlow?.Invoke(this, new CarEventArgs("CarWithGenericEventHandleeful buddy! Gonna blow!"));
                }

                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 5
0
    private void OnCollisionEnter2D(Collision2D other)
    {
        if (_colliding)
        {
            return;
        }
        if (other.gameObject.CompareTag("Pickup"))
        {
            return;
        }
        if (other.otherCollider == landingGear &&
            !other.gameObject.CompareTag("Enemy"))
        {
            return;
        }

        _colliding = true;

        var explosion = explosionPrefabs[Random.Range(0, explosionPrefabs.Length)];

        explosion.Get <Explosion>(transform.position, Quaternion.identity);
        PlayExplosionAudio();

        GetComponent <HelicopterController>().enabled = false;

        DisableChildren();
        Destroy(gameObject, 2f);

        Exploded.Invoke();
    }
Esempio n. 6
0
        // private CarEngineHandlet listofHandlers;

        //public void RegisterCarEngine(CarEngineHandlet methodCall)
        //{
        //    listofHandlers += methodCall;
        //}

        public void Accelerate(int delta)
        {
            if (CarIsDead)
            {
                if (Exploded != null)
                {
                    //listofHandlers("car is dead");
                    Exploded.Invoke("Sorry car is dead");
                }
            }
            else
            {
                this.CurrentSpeed += delta;
                if (10 == (MaxtSpeed - CurrentSpeed) && AboutToBlow != null)
                {
                    AboutToBlow.Invoke("Careful");
                }
                if (CurrentSpeed >= MaxtSpeed)
                {
                    CarIsDead = true;
                }
                else
                {
                    Console.WriteLine("Current speed: {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 7
0
 public void Accelerate(int curr)
 {
     if (isDead)
     {
         Exploded?.Invoke(this, new CarEventArgs("Boom!"));
     }
 }
Esempio n. 8
0
        /// <exception cref="Exception">A delegate callback throws an exception.</exception>
        /// <exception cref="IOException">Произошла ошибка ввода-вывода. </exception>
        /// <exception cref="ArgumentNullException">Параметр <paramref name="format" /> имеет значение null. </exception>
        /// <exception cref="FormatException">Заданная в параметре <paramref name="format" /> спецификация формата недопустима. </exception>
        public void Accelerate(int delta)
        {
            // send message if engine is broken
            if (CarIsDead || CurrentSpeed + delta > MaxSpeed)
            {
                // using null propagation
                //_listOfHandlers?.Invoke ("Car engine is broken...");
                // the same as:
                // if (_listOfHandlers != null) _listOfHandlers("Car engine is broken...");

                // the same using events:
                Exploded?.Invoke(this, new CarEventArgs("Car engine is broken..."));
            }
            else
            {
                CurrentSpeed += delta;
                if (10 == (MaxSpeed - CurrentSpeed))
                {
                    //_listOfHandlers?.Invoke ("Careful buddy! Gonna blow!");
                    // the same using events:
                    AboutToBlow?.Invoke(this, new CarEventArgs("Careful buddy! Gonna blow!"));
                }
                if (CurrentSpeed >= MaxSpeed)
                {
                    CarIsDead = true;
                }
                else
                {
                    Console.WriteLine("Current car speed - {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 9
0
        public void Accelerate(int delta)
        {
            if (_carIsDead)
            {
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
            }
            else
            {
                CurrentSpeed += delta;

                if (10 == MaxSpeed - CurrentSpeed)
                {
                    AboutToBlow?.Invoke(this, new CarEventArgs("Careful buddy! Gonna blow!"));
                }

                if (CurrentSpeed >= MaxSpeed)
                {
                    _carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 10
0
        //1. Определить новый тип делегата, который будет использоваться
        //   для отправки уведомлений вызывающему коду.

        //2. Объявить переменную-член этого типа делегата в классе Саг.
        //private CarEngineHandler listOfHandlers;

        //3. Создать в классе Саг вспомогательную функцию для вызывающего кода
        //public void RegisterWithCarEngine(CarEngineHandler methodtocall)
        //{
        //    listOfHandlers += methodtocall;
        //}
        //Удаляет функцию из списка
        //public void UnRegisterWithCarEngine(CarEngineHandler methodtocall)
        //{
        //    listOfHandlers -= methodtocall;
        //}
        //4. Реализовать метод Accelerate () для обращения к списку вызовов
        //   делегата в подходящих обстоятельствах.

        public void Accelerate(int delta)
        {
            // Если этот автомобиль сломан, то отправить сообщение об этом,
            if (carIsDead)
            {
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
            }
            else
            {
                CurrentSpeed += delta;
                // Автомобиль почти сломан?
                if (10 == (MaxSpeed - CurrentSpeed))
                {
                    AboutToBlow?.Invoke(this,
                                        new CarEventArgs("Careful buddy! Gonna blow!"));
                }
                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 11
0
 // 4) Implement the Accelerate() method to invoke the delegate's
 // invocation list under the correct circumstances.
 public void Accelerate(int delta)
 {
     // If this car is "dead," send dead message.
     if (carIsDead)
     {
         Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
     }
     else
     {
         CurrentSpeed += delta;
         // Is this car "almost dead"?
         if (10 == (MaxSpeed - CurrentSpeed))
         {
             AboutToBlow?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
         }
         if (CurrentSpeed >= MaxSpeed)
         {
             carIsDead = true;
         }
         else
         {
             Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
         }
     }
 }
Esempio n. 12
0
        /// <summary>
        /// Accelerate the car by an amount until max is reached, then explicit events are called
        /// </summary>
        /// <param name="delta"></param>
        public void AccelerateUsingExplicitEvents(int delta)
        {
            // If this car is 'dead', fire Exploded event
            if (CurrentSpeed >= MaxSpeed)
            {
                string message = $"Exploded {Name} Speed {CurrentSpeed}, Accelerate {delta}";
                Exploded?.Invoke(message);
                ExplodedEvent?.Invoke(this, new CarEventArgs(message));
                GenericExplodedEvent?.Invoke(this, new CarEventArgs(message));
            }
            else
            {
                CurrentSpeed += delta;

                // Is this car 'almost dead'?
                if ((MaxSpeed - CurrentSpeed) == 10)
                {
                    // fire AboutToBlow event
                    string message = $"AboutToBlow {Name} Speed {CurrentSpeed}, Accelerate {delta}";
                    AboutToBlow?.Invoke(message);
                    AboutToBlowEvent?.Invoke(this, new CarEventArgs(message));
                    GenericAboutToBlowEvent?.Invoke(this, new CarEventArgs(message));
                }
                else
                {
                    Console.WriteLine($"Accelerating {Name} Speed {CurrentSpeed}, Accelerate {delta}");
                }
            }
        }
Esempio n. 13
0
        public void Acclerate(int delta)
        {
            //Если автомобиль сломан инициировать событие Exploded
            if (carIsDead)
            {
                //Сокращение кода
                //Exploded?.Invoke("Sorry, this car is dead...");

                //Т.к. создан свой класс CarEventArgs, то вызов события меняется
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
            }
            else
            {
                CurrentSpeed += delta;

                //Почти сломался?
                if (10 == MaxSpeed - CurrentSpeed)
                {
                    AboutToBlow?.Invoke(this, new CarEventArgs("Careful buddy! Gonna Blow!"));
                }


                //Всё ещё впорядке!
                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed={0}", CurrentSpeed);
                }
            }
        }
Esempio n. 14
0
        public void Explode()
        {
            var contactsCount = Physics.OverlapSphereNonAlloc(transform.position, _radius, _contacts);

            for (var i = 0; i < contactsCount; i++)
            {
                var contact = _contacts[i];
                if (!contact.TryGetComponent(out Chunk chunk))
                {
                    continue;
                }

                chunk.SetSphere(transform.position, _radius, NullBlock.Instance);
            }

            Exploded?.Invoke(this, EventArgs.Empty);

            switch (_onExploded)
            {
            case ExplosionMode.Destroy:
                Destroy(gameObject);
                break;

            case ExplosionMode.Disable:
                gameObject.SetActive(false);
                break;

            default:
                throw new ArgumentOutOfRangeException();
            }
        }
Esempio n. 15
0
        public void Accelerate(int delta)
        {
            // If this car is "dead," send dead message.
            carSpeedHandlers?.Invoke(CurrentSpeed);
            carNameHandlers?.Invoke(PetName);

            if (carIsDead)
            {
                listOfHandlers?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
                Exploded?.Invoke(this, new CarEventArgs("BABAH!!!"));
            }
            else
            {
                CurrentSpeed += delta;

                // Is this car "almost dead"?
                if (10 == (MaxSpeed - CurrentSpeed))
                {
                    listOfHandlers?.Invoke(this, new CarEventArgs("Careful buddy! Gonna blow!"));
                    AboutToExplode?.Invoke(this, new CarEventArgs("ABOUT TO BABAH!!!!!!"));
                }
                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 16
0
        //  Define a member variable of this delegate.
        //private CarEngineHandler listOfHandlers;

        //  Add registration function for the caller.
        //public void RegisterWithCarEngine(CarEngineHandler methodToCall)
        //{
        //    listOfHandlers += methodToCall;
        //}

        //public void UnRegisterWithCarEngine(CarEngineHandler methoToCall)
        //{
        //    listOfHandlers -= methoToCall;
        //}

        //  Implement the Accelerate() method to invoke the delegate's
        //  invocation list under the correct circumstatnces.
        public void Accelerate(int delta)
        {
            //  If the car is "dead", send dead message.
            if (carIsDead)
            {   //  Can use null conditional operator.
                //  Must explicitly call invoke when doing so.
                //if(Exploded != null)
                //Exploded?.Invoke("Sorry, this car is dead...");
                //  Using EventArgs
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
            }
            else
            {
                CurrentSpeed += delta;

                //  Can use null conditional operator
                //  Must explicitly call Invoke when doing so.
                //  Is the car "almost dead"?
                if (10 == (MaxSpeed - CurrentSpeed))// && AboutToBlow != null)
                {
                    //AboutToBlow?.Invoke("Careful buddy! Gonna blow!");
                    //  Using EventArgs
                    AboutToBlow?.Invoke(this, new CarEventArgs("Careful buddy! Gonna blow!"));
                }
                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
        private void OnPlayerMoveOccured()
        {
            _countdown--;
            _countdownText.text = _countdown.ToString();

            if (_countdown <= 0)
            {
                Exploded?.Invoke();
            }
        }
Esempio n. 18
0
        public void Explode()
        {
            IEnumerable <HitReceiver> receivers = Physics2D.OverlapCircleAll(explosionPoint.position, explosionRadius, explosionLayer)
                                                  .Where(c => c.TryGetComponent <HitReceiver>(out _))
                                                  .Select(c => c.GetComponent <HitReceiver>());

            SwitchRagdoll(receivers);
            ApplyHit(receivers);
            Exploded?.Invoke();
        }
Esempio n. 19
0
        public void Accelerate(int delta)
        {
            //If the car is dead, fire exploded event.
            if (carIsDead)
            {
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
            }
            else
            {
                CurrentSpeed += delta;

                //Almost dead?
                if (10 == MaxSpeed - CurrentSpeed && AboutToBlow != null)
                {
                    AboutToBlow(this, new CarEventArgs("Careful buddy! Gonna blow!"));
                }

                //Still OK
                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine($"Current Speed = {CurrentSpeed}");
                }
            }

            //if (listOfHandlers != null)
            //    listOfHandlers("Sorry, this car is dead...");

            ////If this car is "dead", send dead message.
            //if(carIsDead)
            //{
            //    listOfHandlers?.Invoke("Sorry, this car is dead....");
            //}
            //else
            //{
            //    CurrentSpeed += delta;

            //    //Is the car "almost dead"?
            //    if(10 == (MaxSpeed - CurrentSpeed) && listOfHandlers != null)
            //    {
            //        listOfHandlers("Careful buddy! Gonna blow!");
            //    }
            //    if (CurrentSpeed >= MaxSpeed)
            //        carIsDead = true;
            //    else
            //        Console.WriteLine($"CurrentSpeed = {CurrentSpeed}");
            //}
        }
Esempio n. 20
0
    /// <summary>
    /// What the name says, baby.
    /// </summary>
    private void Explode()
    {
        explosion.SetActive(true);
        smoke.SetActive(false);

        generatorAnimator.SetTrigger("Die");

        if (Exploded != null)
        {
            Exploded.Invoke();
        }

        // After three seconds, stop exploding.
        Invoke("StopExploding", 3);
    }
Esempio n. 21
0
        public IEnumerable <SpacialElement> Explode()
        {
            var ret = new List <SpacialElement>();

            if (Lifetime.IsExpired)
            {
                return(ret);
            }

            this.Lifetime.Dispose();
            var shrapnelSet = new List <Projectile>();

            for (float angle = 0; angle < 360; angle += AngleIncrement)
            {
                var effectiveRange = Range;

                if ((angle > 200 && angle < 340) || (angle > 20 && angle < 160))
                {
                    effectiveRange = Range / 3;
                }

                var shrapnel = SpaceTime.CurrentSpaceTime.Add(new Projectile(this.Weapon, ExplosiveProjectileSpeed, angle, autoLocate: false)
                {
                    Range = effectiveRange
                });
                shrapnel.AddTag(nameof(Explosive));
                shrapnel.MoveTo(this.Left, this.Top, this.ZIndex);
                OnProjectileAdded.Fire(shrapnel);
                if (ProjectilePen != null)
                {
                    shrapnel.Pen = ProjectilePen;
                }

                shrapnelSet.Add(shrapnel);
                shrapnel.AddTag("hot");
                ret.Add(shrapnel);
            }

            foreach (var shrapnel in shrapnelSet)
            {
                shrapnel.Velocity.HitDetectionExclusions.AddRange(shrapnelSet.Where(s => s != shrapnel));
            }

            Exploded.Fire();
            OnExplode.Fire(this);
            return(ret);
        }
Esempio n. 22
0
    private void OnTriggerStay(Collider other)
    {
        if (!CheckCollisionTrigger(other.gameObject.layer))
        {
            return;
        }
        var damageTaker = other.GetComponent <IDamageTaker>();

        if (damageTaker == null)
        {
            return;
        }

        damageTaker.TakeDamage(Constants.TORPEDO_DAMAGE);

        Exploded?.Invoke(this);
    }
Esempio n. 23
0
    private void Explode()
    {
        if (_isExploded)
        {
            return;
        }
        _isExploded = true;

        var meshRenderer = GetComponent <MeshRenderer>();

        meshRenderer.enabled = false;

        var sphereCollider = GetComponent <SphereCollider>();

        sphereCollider.enabled = false;

        var rigidbody = GetComponent <Rigidbody>();

        rigidbody.constraints = RigidbodyConstraints.FreezeAll;

        var navMeshObstacle = GetComponent <NavMeshModifierVolume>();

        navMeshObstacle.enabled = false;

        _audioSource.PlayOneShot(_audioSource.clip);

        var xPosDist = ExplodeInDirection(new Vector3(1, 0, 0));
        var xNegDist = ExplodeInDirection(new Vector3(-1, 0, 0));
        var zPosDist = ExplodeInDirection(new Vector3(0, 0, 1));
        var zNegDist = ExplodeInDirection(new Vector3(0, 0, -1));

        var xTotal = xPosDist + xNegDist;
        var zTotal = zPosDist + zNegDist;

        var xCenter = transform.position.x - xNegDist + xTotal / 2;
        var zCenter = transform.position.z - zNegDist + zTotal / 2;

        var xParticles = Instantiate(FireParticles, new Vector3(xCenter, transform.position.y, transform.position.z), Quaternion.identity);
        var zParticles = Instantiate(FireParticles, new Vector3(transform.position.x, transform.position.y, zCenter), Quaternion.identity);

        xParticles.transform.localScale = new Vector3(xTotal, transform.localScale.y, transform.localScale.z);
        zParticles.transform.localScale = new Vector3(transform.localScale.z, transform.localScale.y, zTotal);

        Exploded?.Invoke(this, EventArgs.Empty);
    }
Esempio n. 24
0
 private void Tile_Click(object sender, RoutedEventArgs e)
 {
     if (!wasLongPress)
     {
         if (!IsDismantled && IsEnabled)
         {
             if (IsMine)
             {
                 state = TileState.Exploded;
                 Render();
                 Exploded?.Invoke(this, null);
             }
             else
             {
                 Open();
             }
         }
     }
     wasLongPress = false;
 }
        /// <summary>
        /// Взрывает и уничтожает обьект
        /// </summary>
        /// <returns></returns>
        private IEnumerator Explosion()
        {
            Vector3    pos    = transform.position;
            GameObject parent = transform.parent.gameObject;

            transform.SetParent(null);
            Destroy(parent);
            transform.position = pos;
            _explodedModel.SetActive(true);
            Exploded?.Invoke(this.gameObject);
            Instantiate(_explosionPrefab, transform);
            yield return(new WaitForSeconds(0.5f));

            _effector.enabled = false;
            var colliders = _explodedModel.GetComponentsInChildren <Collider2D>();

            foreach (var item in colliders)
            {
                item.enabled = false;
            }
            Destroy(gameObject, 2);
        }
Esempio n. 26
0
 public void Accelerate(int delta)
 {
     if (carIsDead)
     {
         //  if this car is dead send dead message
         Exploded?.Invoke(this, new CarEventArgs("Sorry, this car is dead..."));
     }
     //  is this car almost dead
     else if (10 == MaxSpeed - CurrentSpeed)
     {
         AboutToBlow?.Invoke(this, new CarEventArgs("Careful buddy! Gonna blow!"));
     }
     else if (CurrentSpeed >= MaxSpeed)
     {
         carIsDead = true;
     }
     else
     {
         Console.WriteLine($"Current Speed = { CurrentSpeed }.");
     }
     CurrentSpeed += delta;
 }
Esempio n. 27
0
 /*
  * public void RegisterWithCarEngine(CarEngineHandle methodToCall)
  * {
  *      listOfHandlers += methodToCall;
  * }
  *
  * public void UnRegisterWithCarEngine(CarEngineHandle methodToCall)
  * {
  *      listOfHandlers -= methodToCall;
  * }
  */
 public void Accelerate(Int32 delta)
 {
     if (carIdDead)
     {
         Exploded?.Invoke(this, new CarEventArg("Sorry, this car is dead..."));
     }
     else
     {
         CurrentSpeed += delta;
         if (MaxSpeed - CurrentSpeed <= 10)
         {
             AboutToBlow?.Invoke(this, new CarEventArg("Careful buddy! Gonna blow!"));
         }
         if (CurrentSpeed > MaxSpeed)
         {
             this.carIdDead = true;
         }
         else
         {
             Console.WriteLine($"CurrentSpeed = {this.CurrentSpeed}");
         }
     }
 }
Esempio n. 28
0
        public void Explode()
        {
            var shrapnelSet = new List <Projectile>();

            for (float angle = 0; angle < 360; angle += AngleIncrement)
            {
                var effectiveRange = Range;

                if ((angle > 200 && angle < 340) || (angle > 20 && angle < 160))
                {
                    effectiveRange = Range / 3;
                }

                var shrapnel = SpaceTime.CurrentSpaceTime.Add(new Projectile(this.Weapon, this.Left, this.Top, angle)
                {
                    Range = effectiveRange
                });
                shrapnel.MoveTo(shrapnel.Left, shrapnel.Top, this.ZIndex);
                OnProjectileAdded.Fire(shrapnel);
                if (ProjectilePen != null)
                {
                    shrapnel.Pen = ProjectilePen;
                }

                shrapnelSet.Add(shrapnel);
                shrapnel.Tags.Add("hot");
            }

            foreach (var shrapnel in shrapnelSet)
            {
                shrapnel.Speed.HitDetectionExclusions.AddRange(shrapnelSet.Where(s => s != shrapnel));
            }

            Exploded.Fire();
            OnExplode.Fire(this);
            this.Lifetime.Dispose();
        }
 public void Accelerate(int delta)
 {
     if (carIsDead)
     {
         Exploded?.Invoke(this, new CarEventArgs("Car is dead..."));
     }
     else
     {
         CurrentSpeed += delta;
         if (10 >= (MaxSpeed - CurrentSpeed))
         {
             AboutToBlow?.Invoke(this, new CarEventArgs("Careful buddy! Car is gonna blow..."));
         }
         if (CurrentSpeed > MaxSpeed)
         {
             carIsDead = true;
             Exploded?.Invoke(this, new CarEventArgs("Car is dead..."));
         }
         else
         {
             System.Console.WriteLine("CurrentSpeed is : {0}", CurrentSpeed);
         }
     }
 }
Esempio n. 30
0
 public void RemoveExploded(Exploded clientMethod)
 {
     explodedList -= clientMethod;
 }