Skip to content

Commit

Permalink
Remove lane bindable usage to switch playfields
Browse files Browse the repository at this point in the history
  • Loading branch information
LumpBloom7 committed Jun 19, 2024
1 parent eee3d57 commit 47a3f36
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 11 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -33,22 +33,18 @@ public LineLifetimeEntry(DrawableSentakkiRuleset? drawableSentakkiRuleset, doubl

public void Add(SentakkiLanedHitObject hitObject)
{
hitObject.LaneBindable.ValueChanged += onLaneChanged;
hitObject.BreakBindable.ValueChanged += onBreakChanged;
HitObjects.AddInPlace(hitObject, Comparer<SentakkiLanedHitObject>.Create((lhs, rhs) => lhs.Lane.CompareTo(rhs.Lane)));
UpdateLine();
}

public void Remove(SentakkiLanedHitObject hitObject)
{
hitObject.LaneBindable.ValueChanged -= onLaneChanged;
hitObject.BreakBindable.ValueChanged -= onBreakChanged;
HitObjects.Remove(hitObject);
UpdateLine();
}

private void onLaneChanged(ValueChangedEvent<int> obj) => UpdateLine();

private void onBreakChanged(ValueChangedEvent<bool> obj) => UpdateLine();

public Action<LineLifetimeEntry> OnLineUpdated = null!;
Expand Down
9 changes: 2 additions & 7 deletions osu.Game.Rulesets.Sentakki/UI/LanedPlayfield.cs
Original file line number Diff line number Diff line change
Expand Up @@ -65,12 +65,7 @@ public override void Add(HitObject h)
{
case SentakkiLanedHitObject laned:
HitObjectLineRenderer.AddHitObject(laned);
laned.LaneBindable.BindValueChanged(lane =>
{
if (lane.OldValue != lane.NewValue)
Lanes[lane.OldValue].Remove(h);
Lanes[lane.NewValue].Add(h);
}, true);
Lanes[laned.Lane].Add(h);
break;
}
}
Expand All @@ -81,7 +76,7 @@ public override bool Remove(HitObject hitObject)
return false;

HitObjectLineRenderer.RemoveHitObject(lanedHitObject);
return Lanes[lanedHitObject.Lane].Remove(lanedHitObject);
return Lanes[lanedHitObject.Lane].Remove(hitObject: lanedHitObject);
}

private void onHitObjectLoaded(Drawable hitObject)
Expand Down
14 changes: 14 additions & 0 deletions osu.Game.Rulesets.Sentakki/UI/SentakkiPlayfield.cs
Original file line number Diff line number Diff line change
Expand Up @@ -143,6 +143,20 @@ public override void Add(HitObject h)
}
}

public override bool Remove(HitObject h)
{
switch (h)
{
case SentakkiLanedHitObject:
return LanedPlayfield.Remove(h);

case Touch:
return touchPlayfield.Remove(h);
default:
return base.Remove(h);
}
}

private void onNewResult(DrawableHitObject judgedObject, JudgementResult result)
{
if (!judgedObject.DisplayResult || !DisplayJudgements.Value || judgedObject is not DrawableSentakkiHitObject sentakkiHitObject)
Expand Down

0 comments on commit 47a3f36

Please sign in to comment.