Exemplo n.º 1
0
        public async void SetSong(IBeatmapLevel level, BeatmapCharacteristicSO characteristic, BeatmapDifficulty difficulty)
        {
            selectedLevel = level;
            selectedBeatmapCharacteristic = characteristic;
            selectedDifficulty            = difficulty;

            songNameText.text = selectedLevel.songName;

            _playerDataModel.playerData.SetLastSelectedBeatmapCharacteristic(selectedBeatmapCharacteristic);

            var diffBeatmaps = selectedLevel.beatmapLevelData.GetDifficultyBeatmapSet(selectedBeatmapCharacteristic).difficultyBeatmaps;

            int diffIndex = CustomExtensions.GetClosestDifficultyIndex(diffBeatmaps, selectedDifficulty);

            difficultyControlRect.gameObject.SetActive(perPlayerDifficulty);
            difficultyControl.SetTexts(diffBeatmaps.Select(x => x.difficulty.ToString().Replace("Plus", "+")).ToArray());
            difficultyControl.SelectCellWithNumber(diffIndex);

            playNowButton.SetButtonText("PLAY NOW");
            playNowButtonGlow.SetGlow("#5DADE2");

            SetProgressBarState(false, 0f);

            levelCoverImage.texture = await selectedLevel.GetCoverImageTexture2DAsync(new CancellationTokenSource().Token);
        }
Exemplo n.º 2
0
        public void SetSelectedCharateristic(IconSegmentedControl sender, int index)
        {
            _playerDataModel.playerData.SetLastSelectedBeatmapCharacteristic(_beatmapCharacteristics[index]);

            var diffBeatmaps = _selectedLevel.beatmapLevelData.GetDifficultyBeatmapSet(_beatmapCharacteristics[index]).difficultyBeatmaps;

            int diffIndex = CustomExtensions.GetClosestDifficultyIndex(diffBeatmaps, _playerDataModel.playerData.lastSelectedBeatmapDifficulty);

            difficultyControl.SetTexts(diffBeatmaps.Select(x => x.difficulty.ToString().Replace("Plus", "+")).ToArray());
            difficultyControl.SelectCellWithNumber(diffIndex);
            SetSelectedDifficulty(null, diffIndex);
        }
        private void _characteristicControl_didSelectCellEvent(int arg2)
        {
            try
            {
                selectedCharacteristic = _selectedSong.beatmapCharacteristics[arg2];

                Dictionary <IDifficultyBeatmap, string> difficulties = _selectedSong.difficultyBeatmapSets.First(x => x.beatmapCharacteristic == selectedCharacteristic).difficultyBeatmaps.ToDictionary(x => x, x => x.difficulty.ToString().Replace("Plus", "+"));

                if (_selectedSong is CustomLevel)
                {
                    CustomLevel customSelectedSong = _selectedSong as CustomLevel;
                    var         songData           = SongCore.Collections.RetrieveExtraSongData(customSelectedSong.levelID);
                    if (songData != null && songData.difficulties != null)
                    {
                        for (int i = 0; i < difficulties.Keys.Count; i++)
                        {
                            var diffKey = difficulties.Keys.ElementAt(i);

                            var difficultyLevel = songData.difficulties.FirstOrDefault(x => x.difficulty == diffKey.difficulty);
                            if (difficultyLevel != null && !string.IsNullOrEmpty(difficultyLevel.difficultyLabel))
                            {
                                difficulties[diffKey] = difficultyLevel.difficultyLabel;
                                Plugin.log.Info($"Found difficulty label \"{difficulties[diffKey]}\" for difficulty {diffKey.difficulty.ToString()}");
                            }
                        }
                    }
                    else
                    {
                        Plugin.log.Warn($"Unable to retrieve extra song data for song with LevelID \"{customSelectedSong.levelID}\"!");
                    }
                }

                _difficultyControl.SetTexts(difficulties.Values.ToArray());

                int closestDifficultyIndex = CustomExtensions.GetClosestDifficultyIndex(difficulties.Keys.ToArray(), selectedDifficulty);

                _difficultyControl.SelectCellWithNumber(closestDifficultyIndex);

                if (!difficulties.Any(x => x.Key.difficulty == selectedDifficulty))
                {
                    _difficultyControl_didSelectCellEvent(closestDifficultyIndex);
                }
                else
                {
                    levelOptionsChanged?.Invoke();
                }
            }catch (Exception e)
            {
                Plugin.log.Critical($"Exception in char control did select event: {e}");
            }
        }
Exemplo n.º 4
0
        private void _characteristicControl_didSelectCellEvent(int arg2)
        {
            if (_selectedSong != null)
            {
                selectedCharacteristic = _selectedSong.beatmapCharacteristics[arg2];

                if (_selectedSong.beatmapLevelData != null)
                {
                    Dictionary <IDifficultyBeatmap, string> difficulties = _selectedSong.beatmapLevelData.difficultyBeatmapSets.First(x => x.beatmapCharacteristic == selectedCharacteristic).difficultyBeatmaps.ToDictionary(x => x, x => x.difficulty.ToString().Replace("Plus", "+"));

                    if (_selectedSong is CustomPreviewBeatmapLevel)
                    {
                        var songData = SongCore.Collections.RetrieveExtraSongData(SongCore.Collections.hashForLevelID(_selectedSong.levelID));
                        if (songData != null && songData._difficulties != null)
                        {
                            for (int i = 0; i < difficulties.Keys.Count; i++)
                            {
                                var diffKey = difficulties.Keys.ElementAt(i);

                                var difficultyLevel = songData._difficulties.FirstOrDefault(x => x._difficulty == diffKey.difficulty);
                                if (difficultyLevel != null && !string.IsNullOrEmpty(difficultyLevel._difficultyLabel))
                                {
                                    difficulties[diffKey] = difficultyLevel._difficultyLabel;
                                    Plugin.log.Debug($"Found difficulty label \"{difficulties[diffKey]}\" for difficulty {diffKey.difficulty.ToString()}");
                                }
                            }
                        }
                        else
                        {
                            Plugin.log.Warn($"Unable to retrieve extra data for song with hash \"{_selectedSong.levelID}\"!");
                        }
                    }

                    _difficultyControl.SetTexts(difficulties.Values.ToArray());

                    int closestDifficultyIndex = CustomExtensions.GetClosestDifficultyIndex(difficulties.Keys.ToArray(), selectedDifficulty);

                    _difficultyControl.SelectCellWithNumber(closestDifficultyIndex);

                    _difficultyControl_didSelectCellEvent(closestDifficultyIndex);
                }
            }
        }
Exemplo n.º 5
0
        public void SetSelectedCharateristic(IconSegmentedControl sender, int index)
        {
            _playerDataModel.playerData.SetLastSelectedBeatmapCharacteristic(_beatmapCharacteristics[index]);

            var diffBeatmaps = _selectedLevel.beatmapLevelData.GetDifficultyBeatmapSet(_beatmapCharacteristics[index]).difficultyBeatmaps;

            int diffIndex = CustomExtensions.GetClosestDifficultyIndex(diffBeatmaps, _playerDataModel.playerData.lastSelectedBeatmapDifficulty);


            var extraData = Collections.RetrieveExtraSongData(Collections.hashForLevelID(_selectedLevel.levelID));

            if (extraData != null)
            {
                string[] difficultyLabels = new string[diffBeatmaps.Length];

                var extraDifficulties = extraData._difficulties.Where(x => x._beatmapCharacteristicName == _beatmapCharacteristics[index].serializedName || x._beatmapCharacteristicName == _beatmapCharacteristics[index].characteristicNameLocalizationKey);

                for (int i = 0; i < diffBeatmaps.Length; i++)
                {
                    var customDiff = extraDifficulties.FirstOrDefault(x => x._difficulty == diffBeatmaps[i].difficulty);

                    if (customDiff != null && !string.IsNullOrEmpty(customDiff._difficultyLabel))
                    {
                        difficultyLabels[i] = customDiff._difficultyLabel;
                    }
                    else
                    {
                        difficultyLabels[i] = diffBeatmaps[i].difficulty.ToString().Replace("Plus", "+");
                    }
                }

                difficultyControl.SetTexts(difficultyLabels);
            }
            else
            {
                difficultyControl.SetTexts(diffBeatmaps.Select(x => x.difficulty.ToString().Replace("Plus", "+")).ToArray());
            }


            difficultyControl.SelectCellWithNumber(diffIndex);
            SetSelectedDifficulty(null, diffIndex);
        }
Exemplo n.º 6
0
        private void _characteristicControl_didSelectCellEvent(SegmentedControl arg1, int arg2)
        {
            selectedCharacteristic = _selectedSong.beatmapCharacteristics[arg2];

            IDifficultyBeatmap[] difficulties = _selectedSong.difficultyBeatmapSets.First(x => x.beatmapCharacteristic == selectedCharacteristic).difficultyBeatmaps;

            _difficultyControl.SetTexts(difficulties.Select(x => x.difficulty.ToString().Replace("Plus", "+")).ToArray());

            int closestDifficultyIndex = CustomExtensions.GetClosestDifficultyIndex(difficulties, selectedDifficulty);

            _difficultyControl.SelectCellWithNumber(closestDifficultyIndex);

            if (!difficulties.Any(x => x.difficulty == selectedDifficulty))
            {
                _difficultyControl_didSelectCellEvent(null, closestDifficultyIndex);
            }
            else
            {
                levelOptionsChanged?.Invoke();
            }
        }