1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-03 18:12:56 +08:00

Fix tests

This commit is contained in:
Bartłomiej Dach 2025-01-21 14:59:12 +01:00
parent 32d341a468
commit 269ade178e
No known key found for this signature in database
10 changed files with 26 additions and 25 deletions

View File

@ -12,7 +12,6 @@ using osu.Framework.Testing;
using osu.Framework.Timing; using osu.Framework.Timing;
using osu.Game.Rulesets.Catch.Edit.Blueprints.Components; using osu.Game.Rulesets.Catch.Edit.Blueprints.Components;
using osu.Game.Rulesets.Catch.Objects.Drawables; using osu.Game.Rulesets.Catch.Objects.Drawables;
using osu.Game.Rulesets.Edit;
using osu.Game.Rulesets.Objects.Drawables; using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.UI.Scrolling; using osu.Game.Rulesets.UI.Scrolling;
using osu.Game.Tests.Visual; using osu.Game.Tests.Visual;
@ -71,11 +70,11 @@ namespace osu.Game.Rulesets.Catch.Tests.Editor
contentContainer.Playfield.HitObjectContainer.Add(hitObject); contentContainer.Playfield.HitObjectContainer.Add(hitObject);
} }
protected override SnapResult SnapForBlueprint(HitObjectPlacementBlueprint blueprint) protected override void UpdatePlacementTimeAndPosition()
{ {
var result = base.SnapForBlueprint(blueprint); var position = InputManager.CurrentState.Mouse.Position;
result.Time = Math.Round(HitObjectContainer.TimeAtScreenSpacePosition(result.ScreenSpacePosition) / TIME_SNAP) * TIME_SNAP; double time = Math.Round(HitObjectContainer.TimeAtScreenSpacePosition(position) / TIME_SNAP) * TIME_SNAP;
return result; CurrentBlueprint.UpdateTimeAndPosition(position, time);
} }
} }
} }

View File

@ -9,7 +9,6 @@ using osu.Framework.Allocation;
using osu.Framework.Graphics; using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Containers;
using osu.Framework.Timing; using osu.Framework.Timing;
using osu.Game.Rulesets.Edit;
using osu.Game.Rulesets.Mania.Beatmaps; using osu.Game.Rulesets.Mania.Beatmaps;
using osu.Game.Rulesets.Mania.Objects.Drawables; using osu.Game.Rulesets.Mania.Objects.Drawables;
using osu.Game.Rulesets.Mania.UI; using osu.Game.Rulesets.Mania.UI;
@ -47,12 +46,11 @@ namespace osu.Game.Rulesets.Mania.Tests.Editor
}); });
} }
protected override SnapResult SnapForBlueprint(HitObjectPlacementBlueprint blueprint) protected override void UpdatePlacementTimeAndPosition()
{ {
double time = column.TimeAtScreenSpacePosition(InputManager.CurrentState.Mouse.Position); double time = column.TimeAtScreenSpacePosition(InputManager.CurrentState.Mouse.Position);
var pos = column.ScreenSpacePositionAtTime(time); var pos = column.ScreenSpacePositionAtTime(time);
CurrentBlueprint.UpdateTimeAndPosition(pos, time);
return new SnapResult(pos, time, column);
} }
protected override Container CreateHitObjectContainer() => new ScrollingTestContainer(ScrollingDirection.Down) { RelativeSizeAxes = Axes.Both }; protected override Container CreateHitObjectContainer() => new ScrollingTestContainer(ScrollingDirection.Down) { RelativeSizeAxes = Axes.Both };

View File

@ -95,12 +95,12 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints
base.OnDragEnd(e); base.OnDragEnd(e);
} }
public override SnapResult UpdateTimeAndPosition(Vector2 screenSpacePosition, double referenceTime) public override SnapResult UpdateTimeAndPosition(Vector2 screenSpacePosition, double fallbackTime)
{ {
if (State.Value == Visibility.Hidden) if (State.Value == Visibility.Hidden)
return new SnapResult(screenSpacePosition, referenceTime); return new SnapResult(screenSpacePosition, fallbackTime);
var result = hitObjectComposer?.TrySnapToNearbyObjects(screenSpacePosition) ?? new SnapResult(screenSpacePosition, referenceTime); var result = hitObjectComposer?.TrySnapToNearbyObjects(screenSpacePosition) ?? new SnapResult(screenSpacePosition, fallbackTime);
var pos = ToLocalSpace(result.ScreenSpacePosition); var pos = ToLocalSpace(result.ScreenSpacePosition);

View File

@ -52,7 +52,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.HitCircles
public override SnapResult UpdateTimeAndPosition(Vector2 screenSpacePosition, double fallbackTime) public override SnapResult UpdateTimeAndPosition(Vector2 screenSpacePosition, double fallbackTime)
{ {
var result = composer?.TrySnapToNearbyObjects(screenSpacePosition) var result = composer?.TrySnapToNearbyObjects(screenSpacePosition, fallbackTime)
?? composer?.TrySnapToDistanceGrid(screenSpacePosition) ?? composer?.TrySnapToDistanceGrid(screenSpacePosition)
?? composer?.TrySnapToPositionGrid(screenSpacePosition) ?? composer?.TrySnapToPositionGrid(screenSpacePosition)
?? new SnapResult(screenSpacePosition, fallbackTime); ?? new SnapResult(screenSpacePosition, fallbackTime);

View File

@ -433,7 +433,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders.Components
{ {
// Special handling for selections containing head control point - the position of the hit object changes which means the snapped position and time have to be taken into account // Special handling for selections containing head control point - the position of the hit object changes which means the snapped position and time have to be taken into account
Vector2 newHeadPosition = Parent!.ToScreenSpace(e.MousePosition + (dragStartPositions[0] - dragStartPositions[draggedControlPointIndex])); Vector2 newHeadPosition = Parent!.ToScreenSpace(e.MousePosition + (dragStartPositions[0] - dragStartPositions[draggedControlPointIndex]));
SnapResult result = positionSnapProvider?.TrySnapToNearbyObjects(newHeadPosition) SnapResult result = positionSnapProvider?.TrySnapToNearbyObjects(newHeadPosition, oldStartTime)
?? positionSnapProvider?.TrySnapToDistanceGrid(newHeadPosition) ?? positionSnapProvider?.TrySnapToDistanceGrid(newHeadPosition)
?? positionSnapProvider?.TrySnapToPositionGrid(newHeadPosition); ?? positionSnapProvider?.TrySnapToPositionGrid(newHeadPosition);

View File

@ -108,7 +108,7 @@ namespace osu.Game.Rulesets.Osu.Edit.Blueprints.Sliders
public override SnapResult UpdateTimeAndPosition(Vector2 screenSpacePosition, double fallbackTime) public override SnapResult UpdateTimeAndPosition(Vector2 screenSpacePosition, double fallbackTime)
{ {
var result = composer?.TrySnapToNearbyObjects(screenSpacePosition) var result = composer?.TrySnapToNearbyObjects(screenSpacePosition, fallbackTime)
?? composer?.TrySnapToDistanceGrid(screenSpacePosition) ?? composer?.TrySnapToDistanceGrid(screenSpacePosition)
?? composer?.TrySnapToPositionGrid(screenSpacePosition) ?? composer?.TrySnapToPositionGrid(screenSpacePosition)
?? new SnapResult(screenSpacePosition, fallbackTime); ?? new SnapResult(screenSpacePosition, fallbackTime);

View File

@ -225,11 +225,13 @@ namespace osu.Game.Rulesets.Osu.Edit
} }
[CanBeNull] [CanBeNull]
public SnapResult TrySnapToNearbyObjects(Vector2 screenSpacePosition) public SnapResult TrySnapToNearbyObjects(Vector2 screenSpacePosition, double? fallbackTime = null)
{ {
if (!snapToVisibleBlueprints(screenSpacePosition, out var snapResult)) if (!snapToVisibleBlueprints(screenSpacePosition, out var snapResult))
return null; return null;
snapResult.Time ??= fallbackTime;
if (DistanceSnapProvider.DistanceSnapToggle.Value != TernaryState.True || distanceSnapGrid == null) if (DistanceSnapProvider.DistanceSnapToggle.Value != TernaryState.True || distanceSnapGrid == null)
return snapResult; return snapResult;

View File

@ -113,7 +113,12 @@ namespace osu.Game.Overlays.SkinEditor
protected override bool TryMoveBlueprints(DragEvent e, IList<(SelectionBlueprint<ISerialisableDrawable> blueprint, Vector2[] originalSnapPositions)> blueprints) protected override bool TryMoveBlueprints(DragEvent e, IList<(SelectionBlueprint<ISerialisableDrawable> blueprint, Vector2[] originalSnapPositions)> blueprints)
{ {
throw new System.NotImplementedException(); Vector2 distanceTravelled = e.ScreenSpaceMousePosition - e.ScreenSpaceMouseDownPosition;
// The final movement position, relative to movementBlueprintOriginalPosition.
var referenceBlueprint = blueprints.First().blueprint;
Vector2 movePosition = blueprints.First().originalSnapPositions.First() + distanceTravelled;
return SelectionHandler.HandleMovement(new MoveSelectionEvent<ISerialisableDrawable>(referenceBlueprint, movePosition - referenceBlueprint.ScreenSpaceSelectionPoint));
} }
/// <summary> /// <summary>

View File

@ -90,7 +90,7 @@ namespace osu.Game.Rulesets.Edit
/// Updates the time and position of this <see cref="PlacementBlueprint"/> based on the provided snap information. /// Updates the time and position of this <see cref="PlacementBlueprint"/> based on the provided snap information.
/// </summary> /// </summary>
/// <param name="result">The snap result information.</param> /// <param name="result">The snap result information.</param>
public void UpdateTimeAndPosition(SnapResult result) protected void UpdateTimeAndPosition(SnapResult result)
{ {
if (PlacementActive == PlacementState.Waiting) if (PlacementActive == PlacementState.Waiting)
{ {

View File

@ -28,7 +28,7 @@ namespace osu.Game.Tests.Visual
base.Content.Add(HitObjectContainer = CreateHitObjectContainer().With(c => c.Clock = new FramedClock(new StopwatchClock()))); base.Content.Add(HitObjectContainer = CreateHitObjectContainer().With(c => c.Clock = new FramedClock(new StopwatchClock())));
base.Content.Add(new MouseMovementInterceptor base.Content.Add(new MouseMovementInterceptor
{ {
MouseMoved = updatePlacementTimeAndPosition, MouseMoved = UpdatePlacementTimeAndPosition,
}); });
} }
@ -93,13 +93,10 @@ namespace osu.Game.Tests.Visual
if (CurrentBlueprint.PlacementActive == PlacementBlueprint.PlacementState.Finished) if (CurrentBlueprint.PlacementActive == PlacementBlueprint.PlacementState.Finished)
ResetPlacement(); ResetPlacement();
updatePlacementTimeAndPosition(); UpdatePlacementTimeAndPosition();
} }
private void updatePlacementTimeAndPosition() => CurrentBlueprint.UpdateTimeAndPosition(SnapForBlueprint(CurrentBlueprint)); protected virtual void UpdatePlacementTimeAndPosition() => CurrentBlueprint.UpdateTimeAndPosition(InputManager.CurrentState.Mouse.Position, 0);
protected virtual SnapResult SnapForBlueprint(HitObjectPlacementBlueprint blueprint) =>
new SnapResult(InputManager.CurrentState.Mouse.Position, null);
public override void Add(Drawable drawable) public override void Add(Drawable drawable)
{ {
@ -108,7 +105,7 @@ namespace osu.Game.Tests.Visual
if (drawable is HitObjectPlacementBlueprint blueprint) if (drawable is HitObjectPlacementBlueprint blueprint)
{ {
blueprint.Show(); blueprint.Show();
blueprint.UpdateTimeAndPosition(SnapForBlueprint(blueprint)); UpdatePlacementTimeAndPosition();
} }
} }