diff --git a/osu.Game/Localisation/EditorStrings.cs b/osu.Game/Localisation/EditorStrings.cs
index f4e23ae7cb..beddcfd44e 100644
--- a/osu.Game/Localisation/EditorStrings.cs
+++ b/osu.Game/Localisation/EditorStrings.cs
@@ -99,6 +99,16 @@ namespace osu.Game.Localisation
///
public static LocalisableString TimelineTicks => new TranslatableString(getKey(@"timeline_ticks"), @"Ticks");
+ ///
+ /// "0.0°"
+ ///
+ public static LocalisableString RotationFormatUnsnapped => new TranslatableString(getKey(@"rotation_format_unsnapped"), @"0.0°");
+
+ ///
+ /// "0.0° (snapped)"
+ ///
+ public static LocalisableString RotationFormatSnapped => new TranslatableString(getKey(@"rotation_format_snapped"), @"0.0° (snapped)");
+
private static string getKey(string key) => $@"{prefix}:{key}";
}
}
diff --git a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxRotationHandle.cs b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxRotationHandle.cs
index 5a1587eea6..8d0e20e4ac 100644
--- a/osu.Game/Screens/Edit/Compose/Components/SelectionBoxRotationHandle.cs
+++ b/osu.Game/Screens/Edit/Compose/Components/SelectionBoxRotationHandle.cs
@@ -13,6 +13,7 @@ using osu.Framework.Graphics.Cursor;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Input.Events;
using osu.Framework.Localisation;
+using osu.Game.Localisation;
using osuTK;
using osuTK.Graphics;
using Key = osuTK.Input.Key;
@@ -56,7 +57,6 @@ namespace osu.Game.Screens.Edit.Compose.Components
protected override void LoadComplete()
{
base.LoadComplete();
- cumulativeRotation.BindValueChanged(_ => updateTooltipText(), true);
}
protected override void UpdateHoverState()
@@ -130,7 +130,10 @@ namespace osu.Game.Screens.Edit.Compose.Components
newRotation = (newRotation - 180) % 360 + 180;
cumulativeRotation.Value = newRotation;
- HandleRotate?.Invoke((float)cumulativeRotation.Value - oldRotation);
+
+ HandleRotate?.Invoke(newRotation - oldRotation);
+ string tooltipFormat = shouldSnap ? EditorStrings.RotationFormatSnapped.ToString() : EditorStrings.RotationFormatUnsnapped.ToString();
+ TooltipText = newRotation.ToLocalisableString(tooltipFormat);
}
private float snap(float value, float step)
@@ -138,10 +141,5 @@ namespace osu.Game.Screens.Edit.Compose.Components
float floor = MathF.Floor(value / step) * step;
return value - floor < step / 2f ? floor : floor + step;
}
-
- private void updateTooltipText()
- {
- TooltipText = cumulativeRotation.Value?.ToLocalisableString("0.0°") ?? default;
- }
}
}