1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-09 12:23:00 +08:00
osu-lazer/osu.Game/Screens/Edit/Setup/ColoursSection.cs
2024-10-04 11:18:09 +02:00

76 lines
2.3 KiB
C#

// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using osu.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Localisation;
using osu.Game.Graphics.UserInterfaceV2;
using osu.Game.Localisation;
using osu.Game.Skinning;
namespace osu.Game.Screens.Edit.Setup
{
public partial class ColoursSection : SetupSection
{
public override LocalisableString Title => EditorSetupStrings.ColoursHeader;
private FormColourPalette comboColours = null!;
[BackgroundDependencyLoader]
private void load()
{
Children = new Drawable[]
{
comboColours = new FormColourPalette
{
Caption = EditorSetupStrings.HitCircleSliderCombos,
}
};
}
private bool syncingColours;
protected override void LoadComplete()
{
if (Beatmap.BeatmapSkin != null)
comboColours.Colours.AddRange(Beatmap.BeatmapSkin.ComboColours);
if (comboColours.Colours.Count == 0)
{
// compare ctor of `EditorBeatmapSkin`
for (int i = 0; i < SkinConfiguration.DefaultComboColours.Count; ++i)
comboColours.Colours.Add(SkinConfiguration.DefaultComboColours[(i + 1) % SkinConfiguration.DefaultComboColours.Count]);
}
comboColours.Colours.BindCollectionChanged((_, _) =>
{
if (Beatmap.BeatmapSkin != null)
{
if (syncingColours)
return;
syncingColours = true;
Beatmap.BeatmapSkin.ComboColours.Clear();
Beatmap.BeatmapSkin.ComboColours.AddRange(comboColours.Colours);
syncingColours = false;
}
});
Beatmap.BeatmapSkin?.ComboColours.BindCollectionChanged((_, _) =>
{
if (syncingColours)
return;
syncingColours = true;
comboColours.Colours.Clear();
comboColours.Colours.AddRange(Beatmap.BeatmapSkin?.ComboColours);
syncingColours = false;
});
}
}
}