Пример #1
0
 public void RemoveSubscriber(OnDead function)
 {
     if (function != null)
     {
         OnTriggerDead -= function;
     }
 }
Пример #2
0
        private void HandleClose(object sender, CloseEventArgs args)
        {
            State = MediaConnectionState.NotConnected;

            if (args.Code == 1006)
            {
                Thread.Sleep(200);
                Task.Run(() => Connect());
                return;
            }
            else if (args.Code >= 4000)
            {
                var discordCode = (DiscordMediaCloseCode)args.Code;

                if (discordCode == DiscordMediaCloseCode.SessionTimeout || discordCode == DiscordMediaCloseCode.ServerCrashed)
                {
                    Task.Run(() => Connect());
                    return;
                }
            }

            if (args.Code != 1004)
            {
                OnDead?.Invoke(this, args);
            }
        }
    public void Damage(int damageAmount)
    {
        // Cycle through hearst starting from the end
        for (int i = heartList.Count - 1; i >= 0; i--)
        {
            Heart heart = heartList[i];
            // Test if this heart can absorb damageAmount
            if (damageAmount > heart.GetFragmentAmount())
            {
                // Heart cannot absorb full damageAmount, damage heart, and keep going to next heart
                damageAmount -= heart.GetFragmentAmount();
                heart.Damage(heart.GetFragmentAmount());
            }
            else
            {
                // Heart can absorb full damageAmount, absorb, and break out of the cycle
                heart.Damage(damageAmount);
                break;
            }
        }

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

        if (IsDead())
        {
            OnDead?.Invoke(this, EventArgs.Empty);
        }
    }
Пример #4
0
    private IEnumerator Co_Dieing(Vector3 direction)
    {
        if (_fallingRigidbody == null)
        {
            _fallingRigidbody = GetComponentInChildren <Rigidbody>();
        }
        _fallingRigidbody.useGravity  = true;
        _fallingRigidbody.isKinematic = false;
        _fallingRigidbody.constraints = RigidbodyConstraints.FreezeRotationZ;

        _fallingRigidbody.AddForceAtPosition(-direction.normalized * 60, transform.position + Vector3.up * 6, ForceMode.Impulse);


        for (int i = 0; _disableOnDeath != null && i < _disableOnDeath.Length; i++)
        {
            _disableOnDeath[i].SetActive(false);
        }

        do
        {
            yield return(null);

            _fallingRigidbody.constraints = RigidbodyConstraints.None;
        } while (!_deadCondition.IsDead);

        IsDead = true;
        OnDead?.Invoke(this, EventArgs.Empty);
    }
Пример #5
0
    private void OnCollisionEnter2D(Collision2D other)
    {
        if (other.gameObject.layer == platformLayer)
        {
            transform.SetParent(other.transform);
        }

        isGrounded = true;

        if (Camera.main.WorldToScreenPoint(transform.position).y > Screen.height * 0.8f)
        {
            Vector3 cameraPosition = Camera.main.transform.position;
            cameraPosition.y = transform.position.y + 4f;
            StageTransition(cameraPosition, 2f);
        }

        if (other.gameObject.GetComponent <Platform>() is Platform platform)
        {
            if (platform.Score > score)
            {
                UpdateScore(platform.Score);
                if (platform.Score == PlatformGenerator.MaxLevel)
                {
                    OnDead?.Invoke(platform.Score);
                }
            }
        }
    }
Пример #6
0
 private void OnCollisionEnter2D(Collision2D collision)
 {
     _isDead = true;
     OnDead?.Invoke();
     Time.timeScale = 0f;
     //SceneManager.LoadScene("Menu");
 }
Пример #7
0
 public void Dead()
 {
     if (!isDead && OnDead != null)
     {
         OnDead.Invoke();
     }
     isDead = true;
 }
Пример #8
0
        private IEnumerator DieAsync()
        {
            OnDead?.Invoke();

            yield return(new WaitForSeconds(3));

            Destroy(this.gameObject);
        }
Пример #9
0
        // OnDie
        protected virtual void OnDie()
        {
            if (regeneration)
            {
                StopCoroutine("StartRegeneration");
            }

            Vector3 nativePos = transform.position;

            nativePos.y += .15f;

            System.Action callSpawning = () =>
            {
                foreach (GameObject deathObj in deathObjects)
                {
                    if (deathObj != null)
                    {
                        (Instantiate(deathObj, nativePos, Random.rotation) as GameObject)
                        .MoveToCache()
                        .Send("SetOwner", lastDamage.owner)
                        .Send("OnSpawn");
                    }
                }

                foreach (Pickup drop in deathDrops)
                {
                    if (drop != null)
                    {
                        Vector3 randomPos = nativePos;
                        randomPos.y += Random.value;
                        randomPos.x += Random.Range(-1, 1f);
                        randomPos.z += Random.Range(-1, 1f);

                        drop.SpawnCopy(randomPos, Random.rotation)
                        .MoveToCache()
                        .Send("OnSpawn");

                        if (dropOnlyOnePickup)
                        {
                            break;
                        }
                    }
                }
            };

            OnDead.Invoke();

            if (spawnObjectsDelay > 0)
            {
                this.RunAction(callSpawning, spawnObjectsDelay);
            }
            else
            {
                callSpawning.Invoke();
            }

            Respawner.StartRespawn(gameObject, destroyBodyDelay);
        }
 protected void Dead()
 {
     GetComponents <Collider2D>().ForEach(c => c.enabled = false);
     StopAllCoroutines();
     isDead = true;
     animator.Dead();
     Invoke(nameof(Disable), 1);
     OnDead?.Invoke(this);
 }
Пример #11
0
    public void Dead()
    {
        if (!isDead && OnDead != null)
        {
            animator.enabled = false;
            OnDead.Invoke();
        }

        isDead = true;
    }
Пример #12
0
        protected IEnumerator OnDamagedCoroutine()
        {
            OnDead?.Invoke();
            _isDead = true;
            transform.eulerAngles = new Vector3(0, 180, 0);
            transform.Translate(Vector3.back * 1f);
            _animator.SetTrigger("Damaged");
            yield return(new WaitForSeconds(0.3f));

            _isFalling = true;
        }
Пример #13
0
    // membuat burung mati
    public void Dead()
    {
        // pengecekan jika belum mati dan value OnDead tidak sama dengan null
        if (!isDead && OnDead != null)
        {
            // memanggil semua event pada OnDead
            OnDead.Invoke();
        }

        // mengeset variabel dead menjadi true
        isDead = true;
    }
Пример #14
0
    //Membuat Burung Mati
    public void Dead()
    {
        //Pengecekan jka belum mati dan value OnDead tidak sama sekali dengan Null
        if (!isDead && OnDead != null)
        {
            //Memanggil semua event pada OnDead
            OnDead.Invoke();
        }

        //Mengeset variable Dead menjadi True
        isDead = true;
    }
Пример #15
0
    public void Dead()
    {
        if (!isDead && OnDead != null)
        {
            OnDead.Invoke();

            saveSystem.SaveScore(score);
            highscoreText.text = saveSystem.LoadScore().ToString();
        }

        isDead = true;
    }
Пример #16
0
    //Method dead
    public void Dead()
    {
        //Jika belum mati dan value ONDead tidak sama dengan null
        if (!isDead && OnDead != null)
        {
            //Memanggil semua event pada OnDead
            OnDead.Invoke();
        }

        //Set variable dead menjadi true
        isDead = true;
    }
Пример #17
0
    public void Dead() // Membuat burung mati
    {
        // Pengecekan jika belum mati dan value OnDead tidak sama dengan Null
        if (!isDead && OnDead != null)
        {
            // Memanggil semua event pada OnDead
            OnDead.Invoke();
        }

        // Set variabel dead menjadi true
        isDead = true;
    }
 private void Hit(GameObject bullet)
 {
     Health          = Mathf.Max(0, Health - bullet.GetComponent <Bullet>().Damage);
     _material.color = Color.red;
     _material.DOColor(_originalColor, 0.5f);
     _hpBar.DOScaleX((float)Health / MaxHealth, 0.5f);
     Destroy(bullet);
     if (Health <= 0)
     {
         OnDead?.Invoke();
         Destroy(gameObject);
     }
 }
Пример #19
0
    void ExitState()
    {
        switch (m_currentState)
        {
        case EnemyState.kDead:
        {
            m_OnDead = null;
            GameObject.Destroy(gameObject);
            break;
        }

        default: break;
        }
    }
Пример #20
0
 public IEnumerator Fadeout()
 {
     while (m_spriteRendererRef.color.a > 0.0f)
     {
         Color c = m_spriteRendererRef.color;
         c.a -= 0.1f;
         m_spriteRendererRef.color = c;
         yield return(new WaitForSeconds(0.05f));
     }
     m_OnDead();
     m_OnDead = null;
     GameObject.Destroy(gameObject);
     yield return(null);
 }
Пример #21
0
    //Membuat Bird Mati
    public void Dead()
    {
        //Pengecekan jika belum mati dan value OnDead tidak sama dengan Null
        if (!isDead && OnDead != null)
        {
            rigidBody2d.transform.rotation = Quaternion.Euler(0f, 0f, 180f);

            //Memanggil semua event pada OnDead
            OnDead.Invoke();
        }

        //Mengeset variable Dead menjadi True
        isDead = true;
    }
Пример #22
0
    public void Initialize()
    {
        health            = 100;
        playerRigidBody2D = this.gameObject.GetComponent <Rigidbody2D> ();
        anim           = this.gameObject.GetComponent <Animator> ();
        spriteRenderer = this.gameObject.GetComponent <SpriteRenderer> ();
        rangedWeapon   = gameObject.AddComponent <RangedWeapon> ();

        OnDamaged  = new OnDamaged();
        OnDead     = new OnDead();
        OnAttacked = new OnAttacked();

        OnDamaged.AddListener(DebugHealth);
    }
 public override void TakeDamage()
 {
     if (base.Health > 0)
     {
         Health--;
     }
     if (Health < 1)
     {
         if (OnDead != null)
         {
             OnDead.Invoke(this);
         }
     }
 }
Пример #24
0
        public void TakeHit(IAttacker attacker)
        {
            if (IsDead)
            {
                return;
            }

            currentHealth = Mathf.Max(currentHealth -= attacker.Damage, 0);
            OnHealthChanged?.Invoke(currentHealth, maxHealth);

            if (IsDead)
            {
                OnDead?.Invoke();
            }
        }
Пример #25
0
    public void TakeDamage(float damage)
    {
        CurrentHP -= damage;

        hpBar.fillAmount = CurrentHP / MaxHP;

        if (CurrentHP <= 0)
        {
            OnDead?.Invoke();
            if (gameObject != null)
            {
                Destroy(gameObject);
            }
        }
    }
Пример #26
0
    public void Dead()
    {
        if (isImmune)
        {
            return;
        }

        if (!isDead && OnDead != null)
        {
            OnDead.Invoke();
        }

        isDead         = true;
        scoreText.text = "Press P to play again";
        GameOver.gameObject.SetActive(true);
    }
Пример #27
0
 void GameOver()
 {
     StopAllCoroutines();
     foreach (var queue in projectiles)
     {
         while (queue.Count > 0)
         {
             queue.Dequeue().Smack();;
         }
     }
     skinnedMesh.materials[1].mainTexture = dead;
     skinnedMesh.materials[0].color       = new Color(.1f, .5f, .2f);
     overText.text = $"Game Over!\nFinal Score: {score.ToString("N0")}";
     SendScore();
     OnDead.Invoke();
 }
Пример #28
0
 protected void ChangeHealth(float amount)
 {
     HealthPoints += amount;
     // Rounding to min and max
     HealthPoints = Mathf.Clamp(HealthPoints, 0, MaxHealthPoints);
     OnChangeHealth?.Invoke(HealthPoints);
     if (HealthPoints != 0)
     {
         return;
     }
     OnDead?.Invoke();
     // Check for availability death animation
     if (_animator != null)
     {
         StartCoroutine(AnimationDeath());
     }
 }
Пример #29
0
 public void SetHealth(int damage)
 {
     current        -= damage;
     fillAmount      = (float)current / (float)maximum;
     mask.fillAmount = fillAmount;
     for (int i = 0; i < percentageValues.Count; i++)
     {
         if (percentageValues[i] <= fillAmount && percentageValues[i - 1] > fillAmount && i >= 1)
         {
             percentageReached?.Invoke(i);
         }
     }
     if (current <= 0)
     {
         OnDead?.Invoke();
     }
 }
Пример #30
0
    protected virtual void Die()
    {
        //do only one time
        if (isDead)
        {
            return;
        }

        isDead = true;

        OnDead?.Invoke();

        //throw ball if is in hand
        ThrowBall();

        //stop character
        enabled = false;
    }