Exemplo n.º 1
0
        public static List <string> GetTranslate(this IBeatmap beatmap, string languageCode)
        {
            if (beatmap.GetProperty().Translates.TryGetValue(languageCode, out var result))
            {
                return(result);
            }

            return(null);
        }
Exemplo n.º 2
0
        public ControlLayer(IBeatmap beatmap)
        {
            InternalChildren = new Drawable[]
            {
                triggerButtons = new FillFlowContainer <TriggerButton>
                {
                    Anchor       = Anchor.CentreRight,
                    Origin       = Anchor.CentreRight,
                    AutoSizeAxes = Axes.Both,
                    Spacing      = new Vector2(10),
                    Margin       = new MarginPadding(40),
                    Direction    = FillDirection.Vertical,
                }
            };

            AddExtraOverlay(new TriggerButton
            {
                Name        = "Toggle setting button",
                Text        = "Settings",
                TooltipText = "Open/Close setting",
                Action      = ToggleGameplaySettingsOverlay
            },
                            gameplaySettingsOverlay = new GameplaySettingsOverlay
            {
                RelativeSizeAxes = Axes.Y,
                Anchor           = Anchor.CentreRight,
                Origin           = Anchor.CentreRight,
            });

            // Add common group
            AddSettingsGroup(new VisualSettings {
                Expanded = false
            });
            AddSettingsGroup(new PitchSettings {
                Expanded = false
            });
            AddSettingsGroup(new RubyRomajiSettings {
                Expanded = false
            });

            // Add translate group if this beatmap has translate
            if (beatmap.AnyTranslate())
            {
                AddSettingsGroup(new TranslateSettings(beatmap.GetProperty())
                {
                    Expanded = false
                });
            }
        }
Exemplo n.º 3
0
 public static string[] AvailableTranslates(this IBeatmap beatmap) => beatmap?.GetProperty()?.Translates.Keys.ToArray();
Exemplo n.º 4
0
        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);
        }