Example #1
0
        protected override void OnLoadContents()
        {
            base.OnLoadContents();

            var game = Game.ToBaseGame();

            _basicEffect = new BasicEffect(game.GraphicsDevice);
            game.EffectManager.RegisterSingleton(_basicEffect);

            // Hack: register note effect list
            NoteEffects.Effects[(int)NoteType.Floor] = _basicEffect;
            NoteEffects.Effects[(int)NoteType.Long]  = _basicEffect;
            NoteEffects.Effects[(int)NoteType.Arc]   = _basicEffect;
            NoteEffects.Effects[(int)NoteType.Sky]   = _basicEffect;

            var beatmap = Game.FindSingleElement <BeatmapLoader>()?.Beatmap;

            if (beatmap != null)
            {
                _beatmap = new VisualBeatmap(game.GraphicsDevice, beatmap, _stageMetrics);
            }

            var config = ConfigurationStore.Get <TrackDisplayConfig>();

            _panelTexture            = ContentHelper.LoadTexture(game.GraphicsDevice, config.Data.PanelTexture);
            _trackLaneDividerTexture = ContentHelper.LoadTexture(game.GraphicsDevice, config.Data.TrackLaneDividerTexture);
            _skyInputTexture         = ContentHelper.LoadTexture(game.GraphicsDevice, config.Data.SkyInputTexture);

            _noteTexture                = ContentHelper.LoadTexture(game.GraphicsDevice, config.Data.NoteTexture);
            _noteHoldTexture            = ContentHelper.LoadTexture(game.GraphicsDevice, config.Data.NoteHoldTexture);
            _noteHoldHighlightedTexture = ContentHelper.LoadTexture(game.GraphicsDevice, config.Data.NoteHoldHighlightedTexture);
            _noteSkyTexture             = ContentHelper.LoadTexture(game.GraphicsDevice, config.Data.NoteSkyTexture);

            var metrics = _stageMetrics;

            {
                _trackRectangle = new TexturedRectangle(game.GraphicsDevice);
                _trackRectangle.SetVerticesXY(new Vector2(-metrics.HalfTrackFullWidth, -metrics.TrackLength * 0.1f), new Vector2(metrics.TrackFullWidth, metrics.TrackLength * 1.1f), new Color(Color.White, 0.9f), 0, 0);
            }
            {
                _finishLineRectangle = new TexturedRectangle(game.GraphicsDevice);
                _finishLineRectangle.SetVerticesXY(new Vector2(-metrics.HalfTrackInnerWidth, metrics.FinishLineY - metrics.FinishLineHeight / 2), new Vector2(metrics.TrackInnerWidth, metrics.FinishLineHeight), new Color(Color.MediumPurple, 0.9f), 0.02f);
            }
            {
                _laneDividerRectangles = new TexturedRectangle[3];
                for (var i = 1; i < 4; ++i)
                {
                    _laneDividerRectangles[i - 1] = new TexturedRectangle(game.GraphicsDevice);
                    var left   = i * metrics.TrackInnerWidth / 4 - metrics.LaneDividerWidth / 2 - metrics.HalfTrackInnerWidth;
                    var origin = new Vector2(left, 0);
                    var size   = new Vector2(metrics.LaneDividerWidth, metrics.TrackLength);
                    _laneDividerRectangles[i - 1].SetVerticesXY(origin, size, new Color(Color.Lavender, 0.9f), 0.01f);
                }
            }
            {
                _skyInputRectangle = new TexturedRectangle(game.GraphicsDevice);
                _skyInputRectangle.SetVerticesXZ(new Vector2(-metrics.SkyInputWidth / 2, metrics.SkyInputZ - metrics.SkyInputTallness / 2), new Vector2(metrics.SkyInputWidth, metrics.SkyInputTallness), Color.White, metrics.FinishLineY);
            }
        }