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); }
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}"); } }
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); } } }
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); }
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(); } }