Esempio n. 1
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. 2
0
 public void Explode()
 {
     Exploded?.Invoke();
     trail.Cancel();
     AddToParent(new Explosion(Position, 20, 0.25));
     Destroy();
 }
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}");
         }
     }
 }
Esempio n. 4
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);
                }
            }
        }
        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
                {
                    System.Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 6
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. 7
0
 //实现此方法在某些情况下调用委托的调用列表
 public void Accelerate(int delta)
 {
     if (carIsDead)
     {
         Exploded?.Invoke(this, new CarEventArgs("Sorry,this car is dead..."));
         //Exploded?.Invoke("Sorry,this car is dead...");
     }
     else
     {
         CurrentSpeed += delta;
         //提醒快不能用了
         if (10 == MaxSpeed - CurrentSpeed && AboutToBlow != null)
         {
             AboutToBlow(this, new CarEventArgs(" Careful buddy! Gonna blow!"));
         }
         if (CurrentSpeed >= MaxSpeed)
         {
             carIsDead = true;
         }
         else
         {
             Console.WriteLine("=> CurrentSpeed={0}", CurrentSpeed);
         }
     }
 }
Esempio n. 8
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. 9
0
        public void Accelerate(int delta)
        {
            if (carIsDead)
            {
                Exploded?.Invoke(this, new CarEventArgs("Sorry, this CarWithEventArgs is dead..."));
            }
            else
            {
                CurrentSpeed += delta;

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

                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 10
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...");
            }
            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!");
                }
                if (CurrentSpeed >= MaxSpeed)
                {
                    carIsDead = true;
                }
                else
                {
                    Console.WriteLine("CurrentSpeed = {0}", CurrentSpeed);
                }
            }
        }
Esempio n. 11
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);
                }
            }
        }
        private void OnPlayerMoveOccured()
        {
            _countdown--;
            _countdownText.text = _countdown.ToString();

            if (_countdown <= 0)
            {
                Exploded?.Invoke();
            }
        }
Esempio n. 13
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. 14
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. 15
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. 16
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. 17
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. 18
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;
 }
Esempio n. 19
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;
 }
        /// <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. 21
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. 22
0
 private void OnExploded() => Exploded?.Invoke(this, EventArgs.Empty);
Esempio n. 23
0
 protected void OnExploded(object sender, EventArgs e)
 {
     Exploded?.Invoke(sender, e);
 }
Esempio n. 24
0
 public void Explode()
 {
     Exploded?.Invoke();
 }
Esempio n. 25
0
        static LocalVehicle()
        {
            Screen = new Screen();
            HUD    = new HUD();

            Events.Car.PreExplode.SubscribeAll((sender, data) =>
            {
                BeforeExploded?.Invoke(null, System.EventArgs.Empty);
            });

            Events.Car.PreSplit.SubscribeAll((sender, data) =>
            {
                BeforeSplit?.Invoke(null, System.EventArgs.Empty);
            });

            Events.Car.CheckpointHit.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    var eventArgs = new CheckpointHitEventArgs(data.checkpointIndex_, data.trackT_);
                    CheckpointPassed?.Invoke(null, eventArgs);
                }
            });

            Events.Car.Death.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    var eventArgs = new DestroyedEventArgs((DestructionCause)data.causeOfDeath);
                    Destroyed?.Invoke(null, eventArgs);
                }
            });

            Events.Car.Explode.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    var eventArgs = new DestroyedEventArgs((DestructionCause)data.causeOfDeath);
                    Exploded?.Invoke(null, eventArgs);
                }
            });

            Events.RaceEnd.LocalCarHitFinish.Subscribe(data =>
            {
                BeforeFinished?.Invoke(null, System.EventArgs.Empty);
            });

            Events.Player.Finished.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>() != null)
                {
                    var eventArgs = new FinishedEventArgs((RaceEndType)data.finishType_, data.finishData_);
                    Finished?.Invoke(null, eventArgs);
                }
            });

            Events.Car.Horn.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    var eventArgs = new HonkEventArgs(data.hornPercent_, new Position(data.position_.x, data.position_.y, data.position_.z));
                    Honked?.Invoke(null, eventArgs);
                }
            });

            Events.Car.Impact.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    var eventArgs = new ImpactEventArgs(data.speed_, new Position(data.pos_.x, data.pos_.y, data.pos_.z), data.impactedCollider_.name);
                    Collided?.Invoke(null, eventArgs);
                }
            });

            Events.Car.Jump.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    Jumped?.Invoke(null, System.EventArgs.Empty);
                }
            });

            Events.Car.ModeSpecial.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    SpecialModeEvent?.Invoke(null, System.EventArgs.Empty);
                }
            });

            Events.Player.CarRespawn.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>() != null)
                {
                    var pos       = new Position(data.position_.x, data.position_.y, data.position_.z);
                    var rot       = new Rotation(data.rotation_.x, data.rotation_.y, data.rotation_.z);
                    var eventArgs = new RespawnEventArgs(pos, rot, data.fastRespawn_);

                    Respawned?.Invoke(null, eventArgs);
                }
            });

            Events.Car.Split.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    var eventArgs = new SplitEventArgs(data.penetration, data.separationSpeed);
                    Split?.Invoke(null, eventArgs);
                }
            });

            Events.Car.TrickComplete.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    var eventArgs = new TrickCompleteEventArgs(data.cooldownAmount_, data.points_, data.wallRideMeters_, data.ceilingRideMeters_, data.grindMeters_);
                    TrickCompleted?.Invoke(null, eventArgs);
                }
            });

            Events.Car.WingsStateChange.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    if (data.open_)
                    {
                        WingsOpened?.Invoke(null, System.EventArgs.Empty);
                    }
                    else
                    {
                        WingsClosed?.Invoke(null, System.EventArgs.Empty);
                    }
                }
            });

            Events.Car.WingsAbilityStateChanged.SubscribeAll((sender, data) =>
            {
                if (sender.GetComponent <PlayerDataLocal>())
                {
                    if (data.enabled_)
                    {
                        WingsEnabled?.Invoke(null, System.EventArgs.Empty);
                    }
                    else
                    {
                        WingsDisabled?.Invoke(null, System.EventArgs.Empty);
                    }
                }
            });
        }