/// <summary>
 /// Convert Difficulty enum to string
 /// </summary>
 /// <param name="difficulty">Difficulty to convert to string</param>
 /// <returns></returns>
 public static string DifficultyToString(BeatmapDifficulty difficulty)
 {
     if (difficulty == BeatmapDifficulty.ExpertPlus)
     {
         return("Expert+");
     }
     return(difficulty.ToString());
 }
Esempio n. 2
0
        private IEnumerator DelayedSetup()
        {
            //Slight delay before grabbing needed objects
            yield return(new WaitForSeconds(0.1f));

            _timeSync                  = Resources.FindObjectsOfTypeAll <AudioTimeSyncController>().LastOrDefault(x => x.isActiveAndEnabled);
            _songAudio                 = _timeSync.GetField <AudioSource>("_audioSource");
            _levelLoader               = Resources.FindObjectsOfTypeAll <CustomLevelLoader>().First();
            _spawnController           = Resources.FindObjectsOfTypeAll <BeatmapObjectSpawnController>().LastOrDefault(x => x.isActiveAndEnabled);
            _originalSpawnMovementData = _spawnController.GetField <BeatmapObjectSpawnMovementData>("_beatmapObjectSpawnMovementData");
            _pauseController           = Resources.FindObjectsOfTypeAll <PauseController>().LastOrDefault(x => x.isActiveAndEnabled);
            _callbackController        = Resources.FindObjectsOfTypeAll <BeatmapObjectCallbackController>().LastOrDefault(x => x.isActiveAndEnabled);
            _seManager                 = Resources.FindObjectsOfTypeAll <NoteCutSoundEffectManager>().LastOrDefault(x => x.isActiveAndEnabled);
            _beatmapObjectManager      = _seManager.GetField <BeatmapObjectManager>("_beatmapObjectManager");
            _cancelSource              = new CancellationTokenSource();
            var level = BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.difficultyBeatmap.level;

            if (!(level is CustomPreviewBeatmapLevel))
            {
                yield break;
            }
            _currentLevel = level as CustomPreviewBeatmapLevel;

            //Get DifficultyBeatmap
            BeatmapDifficulty       levelDiff           = BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.difficultyBeatmap.difficulty;
            BeatmapCharacteristicSO levelCharacteristic = BS_Utils.Plugin.LevelData.GameplayCoreSceneSetupData.difficultyBeatmap.parentDifficultyBeatmapSet.beatmapCharacteristic;

            _currentDiffBeatmap = _currentLevel.standardLevelInfoSaveData.difficultyBeatmapSets.First(
                x => x.beatmapCharacteristicName == levelCharacteristic.serializedName).difficultyBeatmaps.First(
                x => x.difficulty == levelDiff.ToString());

            _originalInitData = _timeSync.GetField <AudioTimeSyncController.InitData>("_initData");
            _songStartTime    = _originalInitData.startSongTime;
            //Initialize if everything successfully grabbed
            _init = true;
        }
        public string GetPathForDifficulty(string characteristicSerializedName, BeatmapDifficulty difficulty)
        {
            List <BeatmapDifficulty> difficulties = new List <BeatmapDifficulty>();
            var       infoText = File.ReadAllText(_infoPath);
            JSONNode  node     = JSON.Parse(infoText);
            JSONArray difficultyBeatmapSets = node["_difficultyBeatmapSets"].AsArray;
            var       difficultySet         = difficultyBeatmapSets.Linq.First(x => x.Value["_beatmapCharacteristicName"] == characteristicSerializedName).Value;
            var       difficultyBeatmap     = difficultySet["_difficultyBeatmaps"].Linq.First(x => x.Value["_difficulty"].Value == difficulty.ToString()).Value;
            var       fileName = difficultyBeatmap["_beatmapFilename"].Value;

            var idFolder   = $"{songDirectory}{Hash}";
            var songFolder = Directory.GetDirectories(idFolder); //Assuming each id folder has only one song folder
            var subFolder  = songFolder.FirstOrDefault() ?? idFolder;

            return(Directory.GetFiles(subFolder, fileName, SearchOption.AllDirectories).First()); //Assuming each song folder has only one info.json
        }
Esempio n. 4
0
 public bool Equals(string hash, BeatmapDifficulty diff, string mode) => hash == Hash && diff.ToString() == Difficulty && mode == Mode;
Esempio n. 5
0
        private void _difficultyControl_didSelectCellEvent(int arg2)
        {
            if (_selectedSong != null && _selectedSong.beatmapLevelData != null && _selectedSong.beatmapLevelData.difficultyBeatmapSets != null)
            {
                IDifficultyBeatmap beatmap = _selectedSong.beatmapLevelData.difficultyBeatmapSets.First(x => x.beatmapCharacteristic == selectedCharacteristic).difficultyBeatmaps[arg2];
                selectedDifficulty = beatmap.difficulty;

                _blocksParamText.text    = beatmap.beatmapData.notesCount.ToString();
                _obstaclesParamText.text = beatmap.beatmapData.obstaclesCount.ToString();

                if (ScrappedData.Downloaded)
                {
                    ScrappedSong scrappedSong = ScrappedData.Songs.FirstOrDefault(x => x.Hash == SongCore.Collections.hashForLevelID(_selectedSong.levelID));
                    if (scrappedSong != default)
                    {
                        DifficultyStats stats = scrappedSong.Diffs.FirstOrDefault(x => x.Diff == selectedDifficulty.ToString().Replace("+", "Plus"));
                        if (stats != default)
                        {
                            _starsParamText.text = stats.Stars.ToString();
                            _rankedText.text     = $"<color={(stats.Ranked == 0 ? "red" : "green")}>{(stats.Ranked == 0 ? "UNRANKED" : "RANKED")}</color>";
                        }
                        else
                        {
                            _starsParamText.text = "--";
                            _rankedText.text     = $"<color=red>UNRANKED</color>";
                        }
                        long votes = scrappedSong.Upvotes - scrappedSong.Downvotes;
                        _ratingParamText.text = (votes < 0 ? votes.ToString() : $"+{votes}");
                    }
                    else
                    {
                        _starsParamText.text  = "--";
                        _ratingParamText.text = "--";
                        _rankedText.text      = "<color=yellow>SONG NOT FOUND</color>";
                    }
                }
                else
                {
                    _starsParamText.text  = "--";
                    _ratingParamText.text = "--";
                    _rankedText.text      = "<color=yellow>SONG NOT FOUND</color>";
                }

                levelOptionsChanged?.Invoke();
            }
        }
Esempio n. 6
0
        public bool HasDifficulty(string characteristic, BeatmapDifficulty difficulty)
        {
            var characteristicDiffs = CurrentVersion.diffs.Where(x => x.characteristic.ToLower() == characteristic.ToLower());

            return(characteristicDiffs.Any(x => x.difficulty.ToString().ToLower() == difficulty.ToString().ToLower()));
        }