public override void Update()
        {
            Player player = base.Scene.Tracker.GetEntity <Player>();

            if (player != null)
            {
                bool inWater = PlayerHelper.PlayerInWater(player, Mode);

                if (inWater)
                {
                    WaterDuration += Engine.DeltaTime;
                }
                else
                {
                    WaterDuration = 0f;
                }

                if (inWater && WaterDuration >= WaterDrownDuration && !player.Dead)
                {
                    player.Die(Vector2.Zero);
                }
            }

            float interval = 0f;

            if (WaterDuration > WaterDrownDuration * 0.7)
            {
                interval = 0.6f;
            }
            else if (WaterDuration > WaterDrownDuration * 0.5)
            {
                interval = 1.0f;
            }
            else if (WaterDuration > WaterDrownDuration * 0.3)
            {
                interval = 1.4f;
            }

            if (interval > 0 && base.Scene.OnInterval(interval) && player != null && !player.Dead)
            {
                Input.Rumble(RumbleStrength.Climb, RumbleLength.Short);
                Flashing = !Flashing;
            }

            base.Update();
        }
Exemplo n.º 2
0
        public override void Update()
        {
            talker.Enabled = Scene.Tracker.GetEntities <Player>().Cast <Player>().Any(player => (Position - player.Position).Length() < activationDistance && player.OnGround() && !PlayerHelper.PlayerInWater(player));

            bool flagValue = getFlag();

            if (flagValue != active && !sprite.Animating)
            {
                active = flagValue;
                animate();
            }

            base.Update();
        }