示例#1
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="bulletResponse"></param>
        private void OnReceivingBullet(BulletResponse bulletResponse)
        {
            if (gameplayStateHandler != null)
            {
                var received = gameplayStateHandler.ReceiveBullet(bulletResponse.bullet);
                if (received)
                {
                    foreach (var buff in GetComponents <CharacterBuff>())
                    {
                        received = buff.ReceiveBullet(bulletResponse.bullet);
                        if (!received)
                        {
                            break;
                        }
                    }
                }

                bulletResponse.received = received;

                if (received)
                {
                    TakeDamages(bulletResponse.bullet);
                    if (!resources.hasArmor)
                    {
                        Push(bulletResponse.bullet.orientation, Random.Range(600.0f, 800.0f), 0.1f);
                    }
                }
            }
        }
示例#2
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="collision"></param>
        private bool OnTriggerCollide(Collider2D collision)
        {
            _untriggeredContacts.Remove(collision);

            if (_beingDestroyed)
            {
                return(true);
            }

            var shooter = (instigator as WeaponEquippable)?.shooter;

            if (shooter == null)
            {
                shooter = instigator as ShooterBehaviour;
            }

            if (shooter != null)
            {
                if (collision.GetComponent <ShooterBehaviour>() == shooter)
                {
                    return(false);
                }
            }

            var bulletReaction = collision.GetComponent <BulletReaction>();
            var tilemapChunk   = collision.GetComponent <TilemapChunk>();

            if (bulletReaction == null && tilemapChunk == null)
            {
                return(false);
            }

            var received = false;

            if (bulletReaction != null)
            {
                var bulletResponse = new BulletResponse(this, collision);
                bulletReaction.SendBulletReceive(bulletResponse);

                received = bulletResponse.received;
            }
            if (tilemapChunk != null)
            {
                received = true;
            }

            if (received)
            {
                _beingDestroyed = true;
                if (_hitAnimation)
                {
                    GameplayStatics.SpawnFireAndForgetAnimation(_hitAnimation, transform.position, Quaternion.identity)
                    .AddComponent <TileObjectRenderer>().additive = 12;
                }
                Destroy(gameObject);
            }

            return(received);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="bulletResponse"></param>
 public void SendBulletReceive(BulletResponse bulletResponse)
 {
     SendMessage(OnReceivingBulletMethodName, bulletResponse, SendMessageOptions.DontRequireReceiver);
     if (_acceptBullets)
     {
         bulletResponse.received = true;
     }
 }
示例#4
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="response"></param>
 private void OnReceivingBullet(BulletResponse response)
 {
     if (isDashReflected)
     {
         response.received = true;
         ++_damages;
     }
     else
     {
         response.received = false;
     }
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="response"></param>
 private void OnReceivingBullet(BulletResponse response)
 {
     if (response.collider == GetComponent <BoxCollider2D>())
     {
         response.received = true;
         SendPickup(response.bullet.instigator as Character, false);
         _hasOpened = true;
     }
     else
     {
         response.received = false;
     }
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="response"></param>
        private void OnReceivingBullet(BulletResponse response)
        {
            response.received = false;
            if (this.IsInConstruction())
            {
                return;
            }

            _health -= response.bullet.damages;
            _hitFlash?.Flash();

            _expectedBullet = response.bullet;
            _expectedBullet.GetComponent <Collider2D>().isTrigger = false;

            if (_health <= 0)
            {
                _destroyAfterReflect = true;
            }
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="response"></param>
        private void OnReceivingBullet(BulletResponse response)
        {
            if (this.IsInConstruction() || response.collider.isTrigger)
            {
                response.received = false;
                return;
            }

            response.received = true;
            if (TakeDamagesInternal(response.bullet))
            {
                var shooter  = response.bullet.instigator as ShooterBehaviour;
                var spawner  = shooter?.spawner;
                var baseItem = GetComponent <Construct>().baseItem;
                if (spawner != null &&
                    spawner.HasAbility(AbilityId.ConstructRogue) &&
                    baseItem != null &&
                    spawner.character != null)
                {
                    spawner.character.tempConstruct = baseItem;
                }
            }
        }
示例#8
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="bulletResponse"></param>
 private void OnReceivingBullet(BulletResponse bulletResponse)
 {
     transform.parent.SendMessage(nameof(OnReceivingBullet), bulletResponse, SendMessageOptions.DontRequireReceiver);
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="response"></param>
 private void OnReceivingBullet(BulletResponse response)
 {
     PlayAnim();
     response.received = true;
 }
示例#10
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="response"></param>
 private void OnReceivingBullet(BulletResponse response)
 {
     DoCheck(SoundEventEmitterMessage.OnReceivingBullet);
 }