mirror of
https://github.com/ppy/osu.git
synced 2024-11-11 09:17:51 +08:00
Merge pull request #26711 from EVAST9919/hud-linq-remove
Remove LINQ cast in `HUDOverlay`
This commit is contained in:
commit
86027268a8
@ -5,7 +5,6 @@
|
|||||||
|
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
@ -259,13 +258,12 @@ namespace osu.Game.Screens.Play
|
|||||||
|
|
||||||
Vector2? highestBottomScreenSpace = null;
|
Vector2? highestBottomScreenSpace = null;
|
||||||
|
|
||||||
// LINQ cast can be removed when IDrawable interface includes Anchor / RelativeSizeAxes.
|
foreach (var element in mainComponents.Components)
|
||||||
foreach (var element in mainComponents.Components.Cast<Drawable>())
|
|
||||||
processDrawable(element);
|
processDrawable(element);
|
||||||
|
|
||||||
if (rulesetComponents != null)
|
if (rulesetComponents != null)
|
||||||
{
|
{
|
||||||
foreach (var element in rulesetComponents.Components.Cast<Drawable>())
|
foreach (var element in rulesetComponents.Components)
|
||||||
processDrawable(element);
|
processDrawable(element);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -284,33 +282,36 @@ namespace osu.Game.Screens.Play
|
|||||||
else
|
else
|
||||||
bottomRightElements.Y = 0;
|
bottomRightElements.Y = 0;
|
||||||
|
|
||||||
void processDrawable(Drawable element)
|
void processDrawable(ISerialisableDrawable element)
|
||||||
{
|
{
|
||||||
|
// Cast can be removed when IDrawable interface includes Anchor / RelativeSizeAxes.
|
||||||
|
Drawable drawable = (Drawable)element;
|
||||||
|
|
||||||
// for now align some top components with the bottom-edge of the lowest top-anchored hud element.
|
// for now align some top components with the bottom-edge of the lowest top-anchored hud element.
|
||||||
if (element.Anchor.HasFlagFast(Anchor.y0))
|
if (drawable.Anchor.HasFlagFast(Anchor.y0))
|
||||||
{
|
{
|
||||||
// health bars are excluded for the sake of hacky legacy skins which extend the health bar to take up the full screen area.
|
// health bars are excluded for the sake of hacky legacy skins which extend the health bar to take up the full screen area.
|
||||||
if (element is LegacyHealthDisplay)
|
if (element is LegacyHealthDisplay)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float bottom = element.ScreenSpaceDrawQuad.BottomRight.Y;
|
float bottom = drawable.ScreenSpaceDrawQuad.BottomRight.Y;
|
||||||
|
|
||||||
bool isRelativeX = element.RelativeSizeAxes == Axes.X;
|
bool isRelativeX = drawable.RelativeSizeAxes == Axes.X;
|
||||||
|
|
||||||
if (element.Anchor.HasFlagFast(Anchor.TopRight) || isRelativeX)
|
if (drawable.Anchor.HasFlagFast(Anchor.TopRight) || isRelativeX)
|
||||||
{
|
{
|
||||||
if (lowestTopScreenSpaceRight == null || bottom > lowestTopScreenSpaceRight.Value)
|
if (lowestTopScreenSpaceRight == null || bottom > lowestTopScreenSpaceRight.Value)
|
||||||
lowestTopScreenSpaceRight = bottom;
|
lowestTopScreenSpaceRight = bottom;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (element.Anchor.HasFlagFast(Anchor.TopLeft) || isRelativeX)
|
if (drawable.Anchor.HasFlagFast(Anchor.TopLeft) || isRelativeX)
|
||||||
{
|
{
|
||||||
if (lowestTopScreenSpaceLeft == null || bottom > lowestTopScreenSpaceLeft.Value)
|
if (lowestTopScreenSpaceLeft == null || bottom > lowestTopScreenSpaceLeft.Value)
|
||||||
lowestTopScreenSpaceLeft = bottom;
|
lowestTopScreenSpaceLeft = bottom;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// and align bottom-right components with the top-edge of the highest bottom-anchored hud element.
|
// and align bottom-right components with the top-edge of the highest bottom-anchored hud element.
|
||||||
else if (element.Anchor.HasFlagFast(Anchor.BottomRight) || (element.Anchor.HasFlagFast(Anchor.y2) && element.RelativeSizeAxes == Axes.X))
|
else if (drawable.Anchor.HasFlagFast(Anchor.BottomRight) || (drawable.Anchor.HasFlagFast(Anchor.y2) && drawable.RelativeSizeAxes == Axes.X))
|
||||||
{
|
{
|
||||||
var topLeft = element.ScreenSpaceDrawQuad.TopLeft;
|
var topLeft = element.ScreenSpaceDrawQuad.TopLeft;
|
||||||
if (highestBottomScreenSpace == null || topLeft.Y < highestBottomScreenSpace.Value.Y)
|
if (highestBottomScreenSpace == null || topLeft.Y < highestBottomScreenSpace.Value.Y)
|
||||||
|
Loading…
Reference in New Issue
Block a user