コード例 #1
0
 public MusicEffect(SoundReference sound)
 {
     Music          = sound.CreateInstance();
     Music.IsLooped = true;
 }
コード例 #2
0
        public IEnumerable <Wait> RoutineEndLevel()
        {
            var   tile        = PlayerCurio.GetMainTile();
            var   movable     = PlayerCurio.GetBehavior <BehaviorMovable>();
            var   orientation = PlayerCurio.GetBehavior <BehaviorOrientable>();
            var   end         = tile.GetBehavior <BehaviorLevelEnd>();
            var   player      = PlayerCurio.GetBehavior <BehaviorPlayer>();
            int   stains      = 0;
            float pitchSlide  = 0;

            foreach (var bloodStain in VisualEffects.OfType <BloodStain>())
            {
                RunStats.Splats += 1;
                stains          += 1;
                var center = PlayerCurio.GetVisualTarget();
                var emit   = bloodStain.WorldPosition;
                var delta  = Vector2.Normalize(emit - center);
                var offset = delta * Random.NextFloat(40, 80);
                int score;
                if (stains > 20)
                {
                    score = 1000;
                }
                else if (stains > 10)
                {
                    score = 500;
                }
                else
                {
                    score = 50;
                }
                pitchSlide = (float)LerpHelper.QuadraticIn(-1, 1, Math.Min(0, stains / 50f));

                var blob = new ScoreBlood(this, emit, center + delta * Random.NextFloat(4, 8), offset, Util.AngleToVector(Random.NextAngle()) * Random.NextFloat(80, 200), score, 20 + stains * 2);
                if (stains % 3 == 0)
                {
                    blob.Sound       = SoundBloodstainImpact.CreateInstance();
                    blob.Sound.Pitch = pitchSlide;
                }
                bloodStain.Destroy();
            }
            SoundBloodstain.Play(1, pitchSlide, 0);
            yield return(new WaitTime(30 + stains * 2));

            orientation.OrientTo(Util.PointToAngle(end.Direction), LerpHelper.QuadraticIn, new SliderScene(this, 10));
            player.Fade.Set(0, LerpHelper.QuadraticIn, 70);
            var pos = tile.VisualPosition;

            PlayerCurio.MoveVisual(GetOutsidePosition(pos, end.Direction, 200), LerpHelper.QuadraticIn, new SliderScene(this, 100));
            CameraCurio.MoveVisual(GetOutsidePosition(pos, end.Direction, 150), LerpHelper.QuadraticIn, new SliderScene(this, 100));
            SoundEgress.Play(1f, 0f, 0f);
            CurrentTheme.Volume.Set(0, LerpHelper.QuadraticIn, 90);
            player.LevelTransition = true;
            yield return(new WaitTime(100));

            CurrentTheme.Stop(false);
            PlayerCurio.MoveTo(null);
            CameraCurio.MoveTo(null);
            DestroyMap();
            Menu.SubMenu.Open(new BetweenLevelMenu(this));
            yield return(WaitForInput());

            GenerateMap();
            yield return(Scheduler.Instance.RunAndWait(RoutineStartLevel()));
        }