Beispiel #1
0
        public KaraokeSessionStatics(KaraokeRulesetConfigManager config, IBeatmap beatmap)
        {
            rulesetConfigManager = config;

            // Translate
            var useTranslate       = getValue <bool>(KaraokeRulesetSetting.UseTranslate);
            var preferLanguage     = getValue <string>(KaraokeRulesetSetting.PreferLanguage);
            var availableTranslate = beatmap?.AvailableTranslates();
            var selectedLanguage   = availableTranslate?.FirstOrDefault(t => t == preferLanguage) ?? availableTranslate?.FirstOrDefault();

            Set(KaraokeRulesetSession.UseTranslate, useTranslate);
            Set(KaraokeRulesetSession.PreferLanguage, selectedLanguage);

            var displayRuby   = getValue <bool>(KaraokeRulesetSetting.DisplayRuby);
            var displayRomaji = getValue <bool>(KaraokeRulesetSetting.DisplayRomaji);

            Set(KaraokeRulesetSession.DisplayRuby, displayRuby);
            Set(KaraokeRulesetSession.DisplayRomaji, displayRomaji);

            // Pitch
            var overridePitch = getValue <bool>(KaraokeRulesetSetting.OverridePitchAtGameplay);
            var pitchValue    = getValue <int>(KaraokeRulesetSetting.Pitch);

            Set(KaraokeRulesetSession.Pitch, overridePitch ? pitchValue : 0, -10, 10);

            var overrideVocalPitch = getValue <bool>(KaraokeRulesetSetting.OverrideVocalPitchAtGameplay);
            var vocalPitchValue    = getValue <int>(KaraokeRulesetSetting.VocalPitch);

            Set(KaraokeRulesetSession.VocalPitch, overrideVocalPitch ? vocalPitchValue : 0, -10, 10);

            var overrideSaitenPitch = getValue <bool>(KaraokeRulesetSetting.OverrideSaitenPitchAtGameplay);
            var saitenPitchValue    = getValue <int>(KaraokeRulesetSetting.SaitenPitch);

            Set(KaraokeRulesetSession.SaitenPitch, overrideSaitenPitch ? saitenPitchValue : 0, -8, 8);

            // Playback
            var overridePlaybackSpeed = getValue <bool>(KaraokeRulesetSetting.OverridePlaybackSpeedAtGameplay);
            var playbackSpeedValue    = getValue <int>(KaraokeRulesetSetting.PlaybackSpeed);

            Set(KaraokeRulesetSession.PlaybackSpeed, overridePlaybackSpeed ? playbackSpeedValue : 0, -10, 10);

            // Practice
            Set <LyricLine>(KaraokeRulesetSession.NowLyric, null);

            // Saiten stsus
            Set(KaraokeRulesetSession.SaitenStatus, SaitenStatusMode.NotInitialized);
        }
Beispiel #2
0
        public ControlOverlay(IBeatmap beatmap)
        {
            // Add common group
            Add(new VisualSettings {
                Expanded = false
            });
            Add(new PitchSettings {
                Expanded = false
            });
            Add(new RubyRomajiSettings {
                Expanded = false
            });

            // Add translate group if this beatmap has translate
            if (beatmap.AnyTranslate())
            {
                Add(new TranslateSettings(beatmap.AvailableTranslates())
                {
                    Expanded = false
                });
            }
        }
Beispiel #3
0
 public static bool AnyTranslate(this IBeatmap beatmap) => beatmap?.AvailableTranslates()?.Any() ?? false;
        public TestSceneTranslate()
        {
            Child = new OsuScrollContainer
            {
                RelativeSizeAxes = Axes.Both,
                Child            = new Container
                {
                    Masking      = true,
                    CornerRadius = 5,
                    AutoSizeAxes = Axes.Both,
                    Margin       = new MarginPadding(30),
                    Children     = new Drawable[]
                    {
                        background = new Box
                        {
                            Name             = "Background",
                            Anchor           = Anchor.Centre,
                            Origin           = Anchor.Centre,
                            RelativeSizeAxes = Axes.Both,
                        },
                        new FillFlowContainer
                        {
                            Margin       = new MarginPadding(SPACING),
                            Direction    = FillDirection.Horizontal,
                            AutoSizeAxes = Axes.Both,
                            Spacing      = new Vector2(COLUMN_SPACING),
                            Children     = new Drawable[]
                            {
                                timePreview = new TimePreview
                                {
                                    Width = 200
                                },
                                lyricPreview = new LyricPreview
                                {
                                    Width = 400
                                },
                                translateEditor = new TranslateEditor
                                {
                                    Width = 400
                                },
                            }
                        }
                    }
                }
            };

            beatmap = CreateBeatmap(new KaraokeRuleset().RulesetInfo);
            timePreview.LyricLines  = lyricLines;
            lyricPreview.LyricLines = lyricLines;
            translateEditor.LanguageDropdown.Items = new[]
            {
                "zh-TW",
                "en-US",
                "ja-JP"
            };
            translateEditor.LanguageDropdown.Current.BindValueChanged(value =>
            {
                // Save translate first
                var oldLanguageCode = value.OldValue;

                if (!string.IsNullOrEmpty(oldLanguageCode))
                {
                    // Get translate and fill empty
                    var insertTranslate = translateEditor.Translates.ToList();
                    insertTranslate.AddRange(new string[lyricLines.Length - insertTranslate.Count]);

                    if (beatmap.AvailableTranslates().Contains(oldLanguageCode))
                    {
                        var translate = beatmap.GetTranslate(oldLanguageCode);
                        translate.Clear();
                        translate.AddRange(insertTranslate);
                    }
                    else
                    {
                        beatmap.GetProperty().Translates.Add(oldLanguageCode, insertTranslate);
                    }
                }

                // Apply new translate to editor
                var newLanguageCode        = value.NewValue;
                translateEditor.Translates = beatmap.GetTranslate(newLanguageCode)?.ToArray() ?? lyricLines.Select(x => "").ToArray();
            }, true);
        }