1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-19 05:57:19 +08:00

Allow different sizing modes for OverlinedDisplay

This commit is contained in:
smoogipoo 2020-02-19 17:34:47 +09:00
parent e3d37b808d
commit 380d200b46
2 changed files with 47 additions and 15 deletions

View File

@ -15,6 +15,26 @@ namespace osu.Game.Screens.Multi.Components
{
protected readonly Container Content;
public override Axes RelativeSizeAxes
{
get => base.RelativeSizeAxes;
set
{
base.RelativeSizeAxes = value;
updateDimensions();
}
}
public override Axes AutoSizeAxes
{
get => base.AutoSizeAxes;
protected set
{
base.AutoSizeAxes = value;
updateDimensions();
}
}
protected string Details
{
set => details.Text = value;
@ -22,14 +42,12 @@ namespace osu.Game.Screens.Multi.Components
private readonly Circle line;
private readonly OsuSpriteText details;
private readonly GridContainer grid;
protected OverlinedDisplay(string title)
{
RelativeSizeAxes = Axes.Both;
InternalChild = new GridContainer
InternalChild = grid = new GridContainer
{
RelativeSizeAxes = Axes.Both,
Content = new[]
{
new Drawable[]
@ -62,19 +80,12 @@ namespace osu.Game.Screens.Multi.Components
},
new Drawable[]
{
Content = new Container
{
Margin = new MarginPadding { Top = 5 },
RelativeSizeAxes = Axes.Both
}
Content = new Container { Margin = new MarginPadding { Top = 5 } }
}
},
RowDimensions = new[]
{
new Dimension(GridSizeMode.AutoSize),
new Dimension(GridSizeMode.AutoSize),
}
};
updateDimensions();
}
[BackgroundDependencyLoader]
@ -83,5 +94,25 @@ namespace osu.Game.Screens.Multi.Components
line.Colour = colours.Yellow;
details.Colour = colours.Yellow;
}
private void updateDimensions()
{
grid.RowDimensions = new[]
{
new Dimension(GridSizeMode.AutoSize),
new Dimension(GridSizeMode.AutoSize),
new Dimension(AutoSizeAxes.HasFlag(Axes.Y) ? GridSizeMode.AutoSize : GridSizeMode.Distributed),
};
grid.AutoSizeAxes = Axes.None;
grid.RelativeSizeAxes = Axes.None;
grid.AutoSizeAxes = AutoSizeAxes;
grid.RelativeSizeAxes = ~AutoSizeAxes;
Content.AutoSizeAxes = Axes.None;
Content.RelativeSizeAxes = Axes.None;
Content.AutoSizeAxes = grid.AutoSizeAxes;
Content.RelativeSizeAxes = grid.RelativeSizeAxes;
}
}
}

View File

@ -114,7 +114,7 @@ namespace osu.Game.Screens.Multi.Match
{
RelativeSizeAxes = Axes.Both,
Padding = new MarginPadding { Right = 5 },
Child = new OverlinedParticipants()
Child = new OverlinedParticipants { RelativeSizeAxes = Axes.Both }
},
new Container
{
@ -122,6 +122,7 @@ namespace osu.Game.Screens.Multi.Match
Padding = new MarginPadding { Horizontal = 5 },
Child = new OverlinedPlaylist(true) // Temporarily always allow selection
{
RelativeSizeAxes = Axes.Both,
SelectedItem = { BindTarget = SelectedItem }
}
},