mirror of
https://github.com/ppy/osu.git
synced 2024-11-13 16:13:34 +08:00
Handle new combo on HandleReverse
This commit is contained in:
parent
77660e57ea
commit
78037fa477
@ -76,21 +76,44 @@ namespace osu.Game.Rulesets.Catch.Edit
|
||||
|
||||
public override bool HandleReverse()
|
||||
{
|
||||
var hitObjects = EditorBeatmap.SelectedHitObjects;
|
||||
|
||||
double selectionStartTime = SelectedItems.Min(h => h.StartTime);
|
||||
double selectionEndTime = SelectedItems.Max(h => h.GetEndTime());
|
||||
|
||||
EditorBeatmap.PerformOnSelection(hitObject =>
|
||||
{
|
||||
hitObject.StartTime = selectionEndTime - (hitObject.GetEndTime() - selectionStartTime);
|
||||
var newComboPlaces = hitObjects
|
||||
.OfType<CatchHitObject>()
|
||||
.Where(h => h.NewCombo)
|
||||
.Select(obj => obj.StartTime)
|
||||
.ToList();
|
||||
|
||||
if (hitObject is JuiceStream juiceStream)
|
||||
foreach (var h in hitObjects)
|
||||
{
|
||||
h.StartTime = selectionEndTime - (h.GetEndTime() - selectionStartTime);
|
||||
|
||||
if (h is JuiceStream juiceStream)
|
||||
{
|
||||
juiceStream.Path.Reverse(out Vector2 positionalOffset);
|
||||
juiceStream.OriginalX += positionalOffset.X;
|
||||
juiceStream.LegacyConvertedY += positionalOffset.Y;
|
||||
EditorBeatmap.Update(juiceStream);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
foreach (var h in hitObjects)
|
||||
{
|
||||
if (h is CatchHitObject obj) obj.NewCombo = false;
|
||||
}
|
||||
|
||||
foreach (double place in newComboPlaces)
|
||||
{
|
||||
hitObjects
|
||||
.OfType<CatchHitObject>()
|
||||
.Where(obj => obj.StartTime == place)
|
||||
.ToList()
|
||||
.ForEach(obj => obj.NewCombo = true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -85,6 +85,12 @@ namespace osu.Game.Rulesets.Osu.Edit
|
||||
|
||||
bool moreThanOneObject = hitObjects.Count > 1;
|
||||
|
||||
var newComboPlaces = hitObjects
|
||||
.OfType<OsuHitObject>()
|
||||
.Where(h => h.NewCombo)
|
||||
.Select(obj => obj.StartTime)
|
||||
.ToList();
|
||||
|
||||
foreach (var h in hitObjects)
|
||||
{
|
||||
if (moreThanOneObject)
|
||||
@ -97,6 +103,20 @@ namespace osu.Game.Rulesets.Osu.Edit
|
||||
}
|
||||
}
|
||||
|
||||
foreach (var h in hitObjects)
|
||||
{
|
||||
if (h is OsuHitObject obj) obj.NewCombo = false;
|
||||
}
|
||||
|
||||
foreach (double place in newComboPlaces)
|
||||
{
|
||||
hitObjects
|
||||
.OfType<OsuHitObject>()
|
||||
.Where(obj => obj.StartTime == place)
|
||||
.ToList()
|
||||
.ForEach(obj => obj.NewCombo = true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user