mirror of
https://github.com/osukey/osukey.git
synced 2025-05-29 01:17:35 +09:00
Rewrite implementation to avoid duplicated LINQ returns
This commit is contained in:
parent
b95091fbb0
commit
2456a18bc1
@ -115,26 +115,24 @@ namespace osu.Game.Screens.Select.Carousel
|
|||||||
protected virtual CarouselItem GetNextToSelect()
|
protected virtual CarouselItem GetNextToSelect()
|
||||||
{
|
{
|
||||||
int forwardsIndex = lastSelectedIndex;
|
int forwardsIndex = lastSelectedIndex;
|
||||||
|
bool hasForwards;
|
||||||
|
|
||||||
int backwardsIndex = lastSelectedIndex;
|
int backwardsIndex = lastSelectedIndex;
|
||||||
|
bool hasBackwards;
|
||||||
|
|
||||||
while (true)
|
while ((hasBackwards = backwardsIndex >= 0) | (hasForwards = forwardsIndex < Items.Count))
|
||||||
{
|
{
|
||||||
// check if a direction has been exhausted and an item (or null) from the other direction should be returned
|
if (hasForwards && !Items[forwardsIndex].Filtered.Value)
|
||||||
if (forwardsIndex >= Items.Count)
|
|
||||||
return Items.Reverse().Skip(Items.Count - backwardsIndex - 1).FirstOrDefault(item => !item.Filtered.Value);
|
|
||||||
if (backwardsIndex < 0)
|
|
||||||
return Items.Skip(forwardsIndex).FirstOrDefault(item => !item.Filtered.Value);
|
|
||||||
|
|
||||||
// check if an unfiltered item has been reached
|
|
||||||
if (!Items[forwardsIndex].Filtered.Value)
|
|
||||||
return Items[forwardsIndex];
|
return Items[forwardsIndex];
|
||||||
if (!Items[backwardsIndex].Filtered.Value)
|
|
||||||
|
if (hasBackwards && !Items[backwardsIndex].Filtered.Value)
|
||||||
return Items[backwardsIndex];
|
return Items[backwardsIndex];
|
||||||
|
|
||||||
// increment the indices
|
|
||||||
forwardsIndex++;
|
forwardsIndex++;
|
||||||
backwardsIndex--;
|
backwardsIndex--;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual void PerformSelection()
|
protected virtual void PerformSelection()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user