mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 15:53:21 +08:00
Merge branch 'master' into taiko-drumroll-skinning
This commit is contained in:
commit
f16ae522b7
@ -28,8 +28,15 @@ namespace osu.Game.Screens.Select
|
|||||||
{
|
{
|
||||||
public class BeatmapCarousel : CompositeDrawable, IKeyBindingHandler<GlobalAction>
|
public class BeatmapCarousel : CompositeDrawable, IKeyBindingHandler<GlobalAction>
|
||||||
{
|
{
|
||||||
private const float bleed_top = FilterControl.HEIGHT;
|
/// <summary>
|
||||||
private const float bleed_bottom = Footer.HEIGHT;
|
/// Height of the area above the carousel that should be treated as visible due to transparency of elements in front of it.
|
||||||
|
/// </summary>
|
||||||
|
public float BleedTop { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Height of the area below the carousel that should be treated as visible due to transparency of elements in front of it.
|
||||||
|
/// </summary>
|
||||||
|
public float BleedBottom { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Triggered when the <see cref="BeatmapSets"/> loaded change and are completely loaded.
|
/// Triggered when the <see cref="BeatmapSets"/> loaded change and are completely loaded.
|
||||||
@ -373,17 +380,17 @@ namespace osu.Game.Screens.Select
|
|||||||
/// the beatmap carousel bleeds into the <see cref="FilterControl"/> and the <see cref="Footer"/>
|
/// the beatmap carousel bleeds into the <see cref="FilterControl"/> and the <see cref="Footer"/>
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private float visibleHalfHeight => (DrawHeight + bleed_bottom + bleed_top) / 2;
|
private float visibleHalfHeight => (DrawHeight + BleedBottom + BleedTop) / 2;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The position of the lower visible bound with respect to the current scroll position.
|
/// The position of the lower visible bound with respect to the current scroll position.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private float visibleBottomBound => scroll.Current + DrawHeight + bleed_bottom;
|
private float visibleBottomBound => scroll.Current + DrawHeight + BleedBottom;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The position of the upper visible bound with respect to the current scroll position.
|
/// The position of the upper visible bound with respect to the current scroll position.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private float visibleUpperBound => scroll.Current - bleed_top;
|
private float visibleUpperBound => scroll.Current - BleedTop;
|
||||||
|
|
||||||
public void FlushPendingFilterOperations()
|
public void FlushPendingFilterOperations()
|
||||||
{
|
{
|
||||||
@ -641,7 +648,11 @@ namespace osu.Game.Screens.Select
|
|||||||
case DrawableCarouselBeatmap beatmap:
|
case DrawableCarouselBeatmap beatmap:
|
||||||
{
|
{
|
||||||
if (beatmap.Item.State.Value == CarouselItemState.Selected)
|
if (beatmap.Item.State.Value == CarouselItemState.Selected)
|
||||||
scrollTarget = currentY + beatmap.DrawHeight / 2 - DrawHeight / 2;
|
// scroll position at currentY makes the set panel appear at the very top of the carousel's screen space
|
||||||
|
// move down by half of visible height (height of the carousel's visible extent, including semi-transparent areas)
|
||||||
|
// then reapply the top semi-transparent area (because carousel's screen space starts below it)
|
||||||
|
// and finally add half of the panel's own height to achieve vertical centering of the panel itself
|
||||||
|
scrollTarget = currentY - visibleHalfHeight + BleedTop + beatmap.DrawHeight / 2;
|
||||||
|
|
||||||
void performMove(float y, float? startY = null)
|
void performMove(float y, float? startY = null)
|
||||||
{
|
{
|
||||||
|
@ -153,6 +153,8 @@ namespace osu.Game.Screens.Select
|
|||||||
Anchor = Anchor.CentreRight,
|
Anchor = Anchor.CentreRight,
|
||||||
Origin = Anchor.CentreRight,
|
Origin = Anchor.CentreRight,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
BleedTop = FilterControl.HEIGHT,
|
||||||
|
BleedBottom = Footer.HEIGHT,
|
||||||
SelectionChanged = updateSelectedBeatmap,
|
SelectionChanged = updateSelectedBeatmap,
|
||||||
BeatmapSetsChanged = carouselBeatmapsLoaded,
|
BeatmapSetsChanged = carouselBeatmapsLoaded,
|
||||||
GetRecommendedBeatmap = recommender.GetRecommendedBeatmap,
|
GetRecommendedBeatmap = recommender.GetRecommendedBeatmap,
|
||||||
|
Loading…
Reference in New Issue
Block a user