Exemplo n.º 1
0
        void OnJumpEnd()
        {
            jumping--;
            Unit player = BoardManager.instance.player;

            player.renderer.enabled    = true;
            player.followable.isFollow = true;
            for (LinkedListNode <Unit> i = player.followable.Followers.First; i != null; i = i.Next)
            {
                i.Value.cachedTransform.localScale = Vector3.one;
                i.Value.cachedTransform.position   = player.cachedTransform.position;
            }

            Transform shadowTransform = player.shadow.transform;

            shadowTransform.localScale = Vector3.one;
            shadowTransform.SetParent(player.cachedTransform);
            player.shadow.enabled          = true;
            player.rigid.velocity          = Vector2.zero;
            player.collider.enabled        = true;
            player.autoMoveable.enabled    = true;
            player.attackable.enabled      = true;
            player.targetable.IsTargetable = true;

            for (int i = 0; i < 20; i++)
            {
                DeathEffect effect = DeathEffectManager.instance.pool.DequeueObjectPool().GetComponent <DeathEffect>();

                effect.Init((Vector2)player.cachedTransform.position + Random.insideUnitCircle * 0.25f, player.cachedTransform.position, 1.5f);
                //effect.cachedTransform.position = (Vector2)player.cachedTransform.position + Random.insideUnitCircle.normalized * 1.3f;
            }
        }
Exemplo n.º 2
0
        public IEnumerator Respawn()
        {
            if (deathEffect == null)
            {
                Add(deathEffect = new DeathEffect(color));
                image.Visible   = false;
                yield return(deathEffect.Duration + 0.1f);

                respawnEase = 1f;
                Tween respawnTween = Tween.Create(Tween.TweenMode.Oneshot, null, 0.6f, true);
                respawnTween.OnUpdate = delegate(Tween t)
                {
                    respawnEase = 1f - t.Eased;
                };
                respawnTween.OnComplete = delegate
                {
                    respawnEase   = -1f;
                    deathEffect   = null;
                    image.Visible = true;
                    Vector2 normalScale = scale;
                    Add(Wiggler.Create(0.25f, 4f, (f) => scale = normalScale * new Vector2(1, f * 0.15f + 1f), true, true));
                };
                Add(respawnTween);
                OnRespawn?.Invoke(this);
            }
        }
Exemplo n.º 3
0
 public override void Render()
 {
     base.Render();
     if (respawnEase >= 0)
     {
         DeathEffect.Draw(Position - level.ShakeVector * 6, color, respawnEase);
     }
 }
Exemplo n.º 4
0
        private IEnumerator DeathRoutine()
        {
            Level level = SceneAs <Level>();

            if (bounce != Vector2.Zero)
            {
                scale = 1.5f;

                playAudio("event:/char/madeline/predeath", Position);
                Celeste.Freeze(0.05f);

                yield return(null);

                Vector2 from = Position;
                Vector2 to   = from + bounce * 24f;

                Tween tween = Tween.Create(Tween.TweenMode.Oneshot, Ease.CubeOut, 0.5f, start: true);
                Add(tween);

                tween.OnUpdate = delegate(Tween t)
                {
                    Position        = from + (to - from) * t.Eased;
                    scale           = 1.5f - t.Eased * 0.5f;
                    sprite.Rotation = (float)(Math.Floor(t.Eased * 4f) * 6.2831854820251465);
                };

                yield return(tween.Duration * 0.75f);

                tween.Stop();
            }

            Position += Vector2.UnitY * -5f;

            level.Displacement.AddBurst(Position, 0.3f, 0f, 80f);
            level.Shake();
            Input.Rumble(RumbleStrength.Strong, RumbleLength.Long);

            playAudio(HasGolden ? "event:/new_content/char/madeline/death_golden" : "event:/char/madeline/death", Position);

            deathEffect          = new DeathEffect(initialHairColor, Center - Position);
            deathEffect.OnUpdate = delegate(float f)
            {
                light.Alpha = 1f - f;
            };
            Add(deathEffect);

            yield return(deathEffect.Duration * 0.65f);

            if (ActionDelay > 0f)
            {
                yield return(ActionDelay);
            }

            End();
        }
Exemplo n.º 5
0
 public void Die()
 {
     if (!dying)
     {
         deathEffect      = new DeathEffect(Position);
         dying            = true;
         CollisionHandler = new EmptyCollisionHandler(this);
         SoundFactory.Instance.sfxEnemyDeath.Play();
         LootManagement.Instance.enemyDeathLootCheck(game.currentRoom, this);
     }
 }
Exemplo n.º 6
0
 public override void Death()
 {
     base.Death();
     if (DeathEffect)
     {
         DeathEffect.SetActive(true);
         DeathEffect.transform.parent = null;
         Destroy(DeathEffect, 1.5f);
     }
     Destroy(gameObject);
 }
Exemplo n.º 7
0
 public BlueKeese(Game1 game, Vector2 position)
 {
     spawnEffect      = new ExplosionEffect(position);
     deathEffect      = new DeathEffect(position);
     OverlayColor     = Color.White;
     Texture          = NPCSpriteFactory.Instance.textureEnemies;
     Position         = position;
     CollisionHandler = new EnemyCollisionHandler(game, this, size.X, size.Y, 2, 2);
     this.player      = game.player;
     this.game        = game;
 }
Exemplo n.º 8
0
 public BladeTrap(Game1 game, Vector2 position)
 {
     spawnEffect       = new ExplosionEffect(position);
     deathEffect       = new DeathEffect(position);
     OverlayColor      = Color.White;
     Texture           = NPCSpriteFactory.Instance.textureEnemies;
     Position          = position;
     CollisionHandler  = new EnemyCollisionHandler(game, this, size.X, size.Y, 0, 0);
     this.player       = game.player;
     this.game         = game;
     originalPositionX = spritePositionX;
     originalPositionY = spritePositionY;
 }
Exemplo n.º 9
0
    public void ApplyDamage(float damage)
    {
        if (damage > armorValue)
        {
            hitPoints -= (damage - armorValue);
        }

        DeathEffect deathEffect = GetComponent <DeathEffect>();

        if (deathEffect != null && hitPoints <= 0.0f)
        {
            deathEffect.Die();
        }
    }
        //		public List<GameObject> _players;

        void Awake()
        {
            //get components
            _animator    = GetComponentInChildren <Animator>();
            _controller  = GetComponent <CharacterController2D>();
            _deathEffect = GetComponent <DeathEffect>();

            _level = GameObject.FindGameObjectWithTag("Level").GetComponent <Level>();
            //			_players = new List<GameObject>(GameObject.FindGameObjectsWithTag("Player"));

            // listen to some events for illustration purposes
            _controller.onControllerCollidedEvent += onControllerCollider;
            _controller.onTriggerEnterEvent       += onTriggerEnterEvent;
            _controller.onTriggerExitEvent        += onTriggerExitEvent;
        }
Exemplo n.º 11
0
        public override void OnCollision(GameObject other, Vec2 position)
        {
            if (other is Projectile)
            {
                var proj = other as Projectile;
                if (!proj.PendingDispose)
                {
                    GameWorld.AddGameObject(AnimationFactory.Create(position, "LaserExplosion"));
                    Hp -= proj.Definition.Damage;
                    if (Hp <= 0)
                    {
                        Hp = 0;

                        LivesRemaining--;
                        if (LivesRemaining < 0)
                        {
                            LivesRemaining = 0;
                        }

                        if (Active)
                        {
                            DeathEffect.Play();
                            AnimationFactory.Create(RigidBody.GetPosition(), "AlienExplosion");
                        }

                        Active = false;
                    }
                }
            }
            else if (other is Health)
            {
                var health = other as Health;
                Hp += health.Hp;
                if (Hp >= MaxHp)
                {
                    Hp = MaxHp;
                }

                HealthEffect.Play();
            }
            else if (other is Laser)
            {
                WeaponEffect.Play();

                var laser = other as Laser;
                WeaponInventory.AddToInventory(laser);
            }
        }
Exemplo n.º 12
0
    public DeathEffect requestDeathEffect(Element use)
    {
        DeathEffect r = deArray[curDe++];

        if (curDe == MAX_DEATH_EFFECT)
        {
            curDe = 0;
        }

        r.Color                   = use.uiSprite.color;
        r.transform.parent        = use.transform;
        r.transform.localPosition = Vector3.zero;
        r.gameObject.SetActive(false);
        r.gameObject.SetActive(true);
        return(r);
    }
    public void Play(Unit unit)
    {
        //StartCoroutine(PlayCorou(trans));
        int rnd = Random.Range(3, 6);

        for (int i = 0; i < rnd; i++)
        {
            Vector2     offset = new Vector2(Random.Range(-0.25f, 0.25f), Random.Range(-0.25f, 0.25f));
            DeathEffect ef     = pool.DequeueObjectPool().GetComponent <DeathEffect>();
            //if (i == 0)
            //    ef.animator.SetBool("isSmall", false);
            //else
            //    ef.animator.SetBool("isSmall", true);

            ef.Init(unit.cachedTransform.position + (Vector3)offset, unit.cachedTransform.position, 0.3f, unit);
            //yield return new WaitForSeconds(0.1f);
        }
    }
Exemplo n.º 14
0
    // Удаление всех игровых сущностей с поля
    private void RemoveAllCreatures()
    {
        // Удаляем все астероиды с игрового поля
        for (int i = 0; i < _activeAsteroidList.Count; ++i)
        {
            // Отписываемся от события смерти астероида и уничтожаем его
            _activeAsteroidList[i].OnKilled -= OnEnemyKilledHandler;
            DeathEffect de = _activeAsteroidList[i].GetComponent <DeathEffect>();
            if (de != null)
            {
                de.Enable(false);
            }
            Destroy(_activeAsteroidList[i].gameObject);
        }
        _activeAsteroidList.Clear();

        // Удаляем все летающие тарелки (и оставшихся противников, если так случилось)
        Enemy[] lastEnemies = FindObjectsOfType <Enemy>();
        for (int i = 0; i < lastEnemies.Length; ++i)
        {
            // Отписываемся от события смерти сущности и уничтожаем её
            lastEnemies[i].OnKilled -= OnEnemyKilledHandler;
            DeathEffect de = lastEnemies[i].GetComponent <DeathEffect>();
            if (de != null)
            {
                de.Enable(false);
            }
            Destroy(lastEnemies[i].gameObject);
        }

        // Удаляем персонажа с игрового поля
        if (_activePlayer != null)
        {
            DeathEffect de = _activePlayer.GetComponent <DeathEffect>();
            if (de != null)
            {
                de.Enable(false);
            }
            Destroy(_activePlayer.gameObject);
            _activePlayer = null;
        }
    }
Exemplo n.º 15
0
    // Update is called once per frame
    public void Spawn(GameObject dying, Vector3 speed)
    {
        GameObject chosen = null;

        foreach (GameObject effect in Effects)
        {
            if (effect.activeSelf == false)
            {
                chosen = effect;
                break;
            }
        }
        if (chosen != null)
        {
            DeathEffect d = chosen.GetComponent <DeathEffect>();
            chosen.SetActive(true);
            chosen.transform.position = dying.transform.position;
            Rigidbody2D rb = dying.GetComponent <Rigidbody2D>();
            rb.AddForce(speed * 250);
            rb.drag = 4;
            d.Enable(dying);
        }
    }
Exemplo n.º 16
0
 internal void AddDeathEffectToDamageManager(DeathEffect deathEffect)
 {
     damageManager.stuffThatHappensInTheFinalExplosion.Add(deathEffect);
 }
Exemplo n.º 17
0
    public void DelayedKill(float duration)
    {
        DeathEffect deathEffect = new DeathEffect(duration);

        AddEffect(deathEffect);
    }