コード例 #1
0
        public void SetUp()
        {
            source = new TestClock();

            interpolating = new InterpolatingFramedClock();
            interpolating.ChangeSource(source);
        }
コード例 #2
0
 public BeatmapBackgroundWithStoryboard(WorkingBeatmap beatmap, string fallbackTextureName = "Backgrounds/bg1")
     : base(beatmap, fallbackTextureName)
 {
     storyboardClock = new InterpolatingFramedClock();
 }
コード例 #3
0
        protected override void Load(BaseGame game)
        {
            base.Load(game);

            try
            {
                if (Beatmap == null)
                {
                    Beatmap = ((OsuGame)game).Beatmaps.GetWorkingBeatmap(BeatmapInfo);
                }
            }
            catch
            {
                //couldn't load, hard abort!
                Exit();
                return;
            }

            AudioTrack track = Beatmap.Track;

            if (track != null)
            {
                game.Audio.Track.SetExclusive(track);
                sourceClock = track;
            }

            sourceClock = (IAdjustableClock)track ?? new StopwatchClock();
            playerClock = new InterpolatingFramedClock(sourceClock);

            Schedule(() =>
            {
                sourceClock.Reset();
                sourceClock.Start();
            });

            HitRenderer  hitRenderer;
            ScoreOverlay scoreOverlay;

            var beatmap = Beatmap.Beatmap;

            if (beatmap.BeatmapInfo?.Mode > PlayMode.Osu)
            {
                //we only support osu! mode for now because the hitobject parsing is crappy and needs a refactor.
                Exit();
                return;
            }

            PlayMode usablePlayMode = beatmap.BeatmapInfo?.Mode > PlayMode.Osu ? beatmap.BeatmapInfo.Mode : PreferredPlayMode;

            switch (usablePlayMode)
            {
            default:
                scoreOverlay = new ScoreOverlayOsu();

                hitRenderer = new OsuHitRenderer
                {
                    Objects = beatmap.HitObjects,
                    Anchor  = Anchor.Centre,
                    Origin  = Anchor.Centre
                };
                break;

            case PlayMode.Taiko:
                scoreOverlay = new ScoreOverlayOsu();

                hitRenderer = new TaikoHitRenderer
                {
                    Objects = beatmap.HitObjects,
                    Anchor  = Anchor.Centre,
                    Origin  = Anchor.Centre
                };
                break;

            case PlayMode.Catch:
                scoreOverlay = new ScoreOverlayOsu();

                hitRenderer = new CatchHitRenderer
                {
                    Objects = beatmap.HitObjects,
                    Anchor  = Anchor.Centre,
                    Origin  = Anchor.Centre
                };
                break;

            case PlayMode.Mania:
                scoreOverlay = new ScoreOverlayOsu();

                hitRenderer = new ManiaHitRenderer
                {
                    Objects = beatmap.HitObjects,
                    Anchor  = Anchor.Centre,
                    Origin  = Anchor.Centre
                };
                break;
            }

            hitRenderer.OnHit  += delegate(HitObject h) { scoreOverlay.OnHit(h); };
            hitRenderer.OnMiss += delegate(HitObject h) { scoreOverlay.OnMiss(h); };

            if (autoplay)
            {
                hitRenderer.Schedule(() => hitRenderer.DrawableObjects.ForEach(h => h.State = ArmedState.Armed));
            }

            Children = new Drawable[]
            {
                hitRenderer,
                scoreOverlay,
            };
        }
コード例 #4
0
ファイル: Player.cs プロジェクト: Vexus178/osu
        private void load(AudioManager audio, BeatmapDatabase beatmaps, OsuGameBase game)
        {
            try
            {
                if (Beatmap == null)
                {
                    Beatmap = beatmaps.GetWorkingBeatmap(BeatmapInfo);
                }
            }
            catch
            {
                //couldn't load, hard abort!
                Exit();
                return;
            }

            AudioTrack track = Beatmap.Track;

            if (track != null)
            {
                audio.Track.SetExclusive(track);
                sourceClock = track;
            }

            sourceClock = (IAdjustableClock)track ?? new StopwatchClock();
            Clock       = new InterpolatingFramedClock(sourceClock);

            Schedule(() =>
            {
                sourceClock.Reset();
                sourceClock.Start();
            });

            var beatmap = Beatmap.Beatmap;

            if (beatmap.BeatmapInfo?.Mode > PlayMode.Osu)
            {
                //we only support osu! mode for now because the hitobject parsing is crappy and needs a refactor.
                Exit();
                return;
            }

            PlayMode usablePlayMode = beatmap.BeatmapInfo?.Mode > PlayMode.Osu ? beatmap.BeatmapInfo.Mode : PreferredPlayMode;

            ruleset = Ruleset.GetRuleset(usablePlayMode);

            var scoreOverlay = ruleset.CreateScoreOverlay();
            var hitRenderer  = ruleset.CreateHitRendererWith(beatmap.HitObjects);

            hitRenderer.OnHit  += delegate(HitObject h) { scoreOverlay.OnHit(h); };
            hitRenderer.OnMiss += delegate(HitObject h) { scoreOverlay.OnMiss(h); };

            if (Autoplay)
            {
                hitRenderer.Schedule(() => hitRenderer.DrawableObjects.ForEach(h => h.State = ArmedState.Armed));
            }

            Children = new Drawable[]
            {
                new PlayerInputManager(game.Host)
                {
                    PassThrough = false,
                    Children    = new Drawable[]
                    {
                        hitRenderer,
                    }
                },
                scoreOverlay,
            };
        }