Beispiel #1
0
 public ChooseSongScene(GUIComponentContainer guiComponents, PolarPolygon centerPolygon, Player player, ShaderProgram shaderProgram)
 {
     _guiComponents = guiComponents;
     _centerPolygon = centerPolygon;
     _player        = player;
     _shaderProgram = shaderProgram;
     Exclusive      = true;
 }
Beispiel #2
0
        public LoadingScene(float audioCorrection, float maxAudioVolume, PolarPolygon centerPolygon, Player player, ShaderProgram shaderProgram, Song song)
        {
            Exclusive        = true;
            _audioCorrection = audioCorrection;
            _maxAudioVolume  = maxAudioVolume;
            _centerPolygon   = centerPolygon;
            _player          = player;
            _shaderProgram   = shaderProgram;

            _song = song;
        }
Beispiel #3
0
        public override void Load()
        {
            SceneManager.GameWindow.Cursor = MouseCursor.Default;

            // Remap keypad enter to normal enter
            InputSystem.KeyRemappings.Add(Key.KeypadEnter, Key.Enter);

            _gameVersion = System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();

            // Choose correct version directive because OSX is dumb
            string version = "#version 130";

            if (PlatformDetection.RunningPlatform() == Platform.MacOSX)
            {
                version = "#version 150";
            }

            // Load shaders
            var vert = new Shader(Path.Combine(SceneManager.Directories["Shaders"].FullName, "simple.vs"), version);
            var frag = new Shader(Path.Combine(SceneManager.Directories["Shaders"].FullName, "simple.fs"), version);

            _shaderProgram = new ShaderProgram();
            _shaderProgram.Load(vert, frag);

            _player                      = new Player();
            _player.Position             = new PolarVector(1.5 * (Math.PI / 3) - _player.Length * 0.5f, _player.Position.Radius);
            _player.ShaderProgram        = _shaderProgram;
            _centerPolygon               = new PolarPolygon(Enumerable.Repeat(true, 6).ToList(), new PolarVector(0.5, 0), 50, 80, 0);
            _centerPolygon.ShaderProgram = _shaderProgram;

            _menuFont        = SceneManager.GameFontLibrary.GetFirstOrDefault("menuworld");
            _menuFontDrawing = new QFontDrawing();
            _menuFontDrawing.ProjectionMatrix = SceneManager.ScreenCamera.WorldModelViewProjection;
            _menuRenderOptions = new QFontRenderOptions {
                DropShadowActive = true, Colour = Color.White
            };

            _versionFont = SceneManager.GameFontLibrary.GetFirstOrDefault("versiontext");

            var guiRenderer = new Gwen.Renderer.OpenTK();
            var skin        = new TexturedBase(guiRenderer, Path.Combine(SceneManager.Directories["Images"].FullName, "DefaultSkin.png"));

            skin.DefaultFont = new Gwen.Font(guiRenderer, SceneManager.FontPath, 30);
            _GUIComponents   = new GUIComponentContainer(guiRenderer, skin);

            Loaded = true;
        }
        public StageGeometry Build(AudioFeatures audioFeatures, Random random, GeometryBuilderOptions builderOptions)
        {
            _audioFeatures  = audioFeatures;
            _builderOptions = builderOptions;
            _random         = random;
            _builderOptions.RandomFunction = _random;

            BuildGoodBeatsList();
            BuildBeatFrequencyList();

            BuildGeometry();
            SetStartColour();

            var backgroundPolygon = new PolarPolygon(6, new PolarVector(0.5, 0), 500000, -20, 0);

            backgroundPolygon.ShaderProgram = _builderOptions.GeometryShaderProgram;

            return(new StageGeometry(_onsets, _onsetDrawing, _segmentStartColour, _random)
            {
                BackgroundPolygon = backgroundPolygon
            });
        }
Beispiel #5
0
        public void LoadAsync(Song song, float audioCorrection, float maxAudioVolume, IProgress <string> progress, PolarPolygon centerPolygon, Player player, DifficultyOptions difficultyOptions, DifficultyLevels difficultyLevel)
        {
            progress.Report("Loading audio");

            if (!song.SongAudioLoaded)
            {
                song.LoadSongAudio();
            }

            song.SongAudio.Position = 0;

            var tempStream = new MemoryStream();

            song.SongAudio.WriteToStream(tempStream);
            tempStream.Position = 0;

            var sourceStream = new MemoryStream();

            tempStream.CopyTo(sourceStream);
            tempStream.Position = sourceStream.Position = 0;

            IWaveSource detectionSource = new CSCore.Codecs.RAW.RawDataReader(tempStream, song.SongAudio.WaveFormat);

            IWaveSource songSource = new CSCore.Codecs.RAW.RawDataReader(sourceStream, song.SongAudio.WaveFormat);

            _stageAudio.Load(songSource);

            _stageAudio.MaxVolume = maxAudioVolume;
            _random = new Random(_stageAudio.AudioHashCode);

            _stageAudio.Volume = 0f;
            _stageAudio.Seek(WADSWORTH);
            _stageAudio.Play();

            _stageAudio.FadeIn(1000, _stageAudio.MaxVolume * 0.5f, 0.01f, FadeEndAction.Nothing);

            LoadAudioFeatures(detectionSource, audioCorrection, progress, song);

            progress.Report("Building stage geometry");
            //Apply difficulty options to builder options
            var bOptions = new GeometryBuilderOptions(ShaderProgram);

            bOptions.ApplyDifficulty(difficultyOptions);
            _difficultyOptions = difficultyOptions;

            //Build stage geometry
            StageGeometry                   = new StageGeometryBuilder().Build(_audioFeatures, _random, bOptions);
            StageGeometry.ParentStage       = this;
            StageGeometry.Player            = player;
            StageGeometry.CenterPolygon     = centerPolygon;
            StageGeometry.RotationSpeed     = _difficultyOptions.RotationSpeed;
            StageGeometry.CurrentColourMode = (ColourMode)ServiceLocator.Settings["ColourMode"];

            progress.Report("Load complete");
            Thread.Sleep(1000);

            _stageAudio.CancelAudioFades();
            _stageAudio.FadeOut(500, 0.0f, 0.01f, FadeEndAction.Stop);

            CurrentSong       = song;
            CurrentDifficulty = difficultyLevel;

            song.SongAudioLoaded = true;

            Loaded = true;
        }