Skip to content

Commit

Permalink
Update to support non-control-point sample changes
Browse files Browse the repository at this point in the history
  • Loading branch information
peppy committed May 24, 2023
1 parent e68ba63 commit a9ba16a
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -199,12 +199,12 @@ private void sampleChanged(string sampleName, TernaryState state)

private void bankChanged(string bankName, TernaryState state)
{
if (currentPlacement == null) return;
if (CurrentPlacement == null) return;

switch (state)
{
case TernaryState.True:
currentPlacement.HitObject.SampleControlPoint.SampleBank = bankName;
CurrentPlacement.HitObject.Samples = CurrentPlacement.HitObject.Samples.Select(s => s.With(newBank: bankName)).ToList();
break;
}
}
Expand Down
23 changes: 4 additions & 19 deletions osu.Game/Screens/Edit/Compose/Components/EditorSelectionHandler.cs
Original file line number Diff line number Diff line change
Expand Up @@ -81,7 +81,7 @@ private void createStateBindables()
{
// Never remove a sample bank.
// These are basically radio buttons, not toggles.
if (SelectedItems.All(h => h.SampleControlPoint.SampleBank == bankName))
if (SelectedItems.All(h => h.Samples.All(s => s.Bank == bankName)))
bindable.Value = TernaryState.True;
}

Expand Down Expand Up @@ -167,7 +167,7 @@ protected virtual void UpdateTernaryStates()

foreach ((string bankName, var bindable) in SelectionBankStates)
{
bindable.Value = GetStateFromSelection(SelectedItems, h => h.SampleControlPoint.SampleBank == bankName);
bindable.Value = GetStateFromSelection(SelectedItems, h => h.Samples.All(s => s.Bank == bankName));
}
}

Expand All @@ -183,25 +183,10 @@ public void AddSampleBank(string bankName)
{
EditorBeatmap.PerformOnSelection(h =>
{
if (h.SampleControlPoint.SampleBank == bankName)
if (h.Samples.All(s => s.Bank == bankName))
return;

h.SampleControlPoint.SampleBank = bankName;
EditorBeatmap.Update(h);
});
}

/// <summary>
/// Removes a sample bank from all selected <see cref="HitObject"/>s.
/// </summary>
/// <param name="bankName">The name of the sample bank.</param>
public void RemoveSampleBank(string bankName)
{
EditorBeatmap.PerformOnSelection(h =>
{
if (h.SampleControlPoint.SampleBank == bankName)
h.SampleControlPoint.SampleBankBindable.SetDefault();

h.Samples = h.Samples.Select(s => s.With(newBank: bankName)).ToList();
EditorBeatmap.Update(h);
});
}
Expand Down

0 comments on commit a9ba16a

Please sign in to comment.