mirror of
https://github.com/osukey/osukey.git
synced 2025-08-07 16:43:52 +09:00
Move old ScreenTitle to MultiHeaderTitle
This commit is contained in:
@ -1,102 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using System;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
using osu.Framework.Graphics.Shapes;
|
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Game.Graphics.Sprites;
|
|
||||||
using osuTK;
|
|
||||||
using osuTK.Graphics;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
|
||||||
{
|
|
||||||
public abstract class ScreenTitle : CompositeDrawable, IHasAccentColour
|
|
||||||
{
|
|
||||||
public const float ICON_WIDTH = ICON_SIZE + spacing;
|
|
||||||
|
|
||||||
public const float ICON_SIZE = 25;
|
|
||||||
private const float spacing = 6;
|
|
||||||
private const int text_offset = 2;
|
|
||||||
|
|
||||||
private SpriteIcon iconSprite;
|
|
||||||
private readonly OsuSpriteText titleText, pageText;
|
|
||||||
|
|
||||||
protected IconUsage Icon
|
|
||||||
{
|
|
||||||
set
|
|
||||||
{
|
|
||||||
if (iconSprite == null)
|
|
||||||
throw new InvalidOperationException($"Cannot use {nameof(Icon)} with a custom {nameof(CreateIcon)} function.");
|
|
||||||
|
|
||||||
iconSprite.Icon = value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected string Title
|
|
||||||
{
|
|
||||||
set => titleText.Text = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected string Section
|
|
||||||
{
|
|
||||||
set => pageText.Text = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Color4 AccentColour
|
|
||||||
{
|
|
||||||
get => pageText.Colour;
|
|
||||||
set => pageText.Colour = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
protected virtual Drawable CreateIcon() => iconSprite = new SpriteIcon
|
|
||||||
{
|
|
||||||
Size = new Vector2(ICON_SIZE),
|
|
||||||
};
|
|
||||||
|
|
||||||
protected ScreenTitle()
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.Both;
|
|
||||||
|
|
||||||
InternalChildren = new Drawable[]
|
|
||||||
{
|
|
||||||
new FillFlowContainer
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.Both,
|
|
||||||
Spacing = new Vector2(spacing, 0),
|
|
||||||
Direction = FillDirection.Horizontal,
|
|
||||||
Children = new[]
|
|
||||||
{
|
|
||||||
CreateIcon().With(t =>
|
|
||||||
{
|
|
||||||
t.Anchor = Anchor.Centre;
|
|
||||||
t.Origin = Anchor.Centre;
|
|
||||||
}),
|
|
||||||
titleText = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold),
|
|
||||||
Margin = new MarginPadding { Bottom = text_offset }
|
|
||||||
},
|
|
||||||
new Circle
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
Size = new Vector2(4),
|
|
||||||
Colour = Color4.Gray,
|
|
||||||
},
|
|
||||||
pageText = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
Font = OsuFont.GetFont(size: 20),
|
|
||||||
Margin = new MarginPadding { Bottom = text_offset }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,40 +0,0 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
|
||||||
using osu.Framework.Graphics;
|
|
||||||
using osu.Framework.Graphics.Containers;
|
|
||||||
using osu.Framework.Graphics.Sprites;
|
|
||||||
using osu.Framework.Graphics.Textures;
|
|
||||||
using osuTK;
|
|
||||||
|
|
||||||
namespace osu.Game.Graphics.UserInterface
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// A custom icon class for use with <see cref="ScreenTitle.CreateIcon()"/> based off a texture resource.
|
|
||||||
/// </summary>
|
|
||||||
public class ScreenTitleTextureIcon : CompositeDrawable
|
|
||||||
{
|
|
||||||
private readonly string textureName;
|
|
||||||
|
|
||||||
public ScreenTitleTextureIcon(string textureName)
|
|
||||||
{
|
|
||||||
this.textureName = textureName;
|
|
||||||
}
|
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
|
||||||
private void load(TextureStore textures)
|
|
||||||
{
|
|
||||||
Size = new Vector2(ScreenTitle.ICON_SIZE);
|
|
||||||
|
|
||||||
InternalChild = new Sprite
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Texture = textures.Get(textureName),
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
FillMode = FillMode.Fit
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -6,10 +6,13 @@ using osu.Framework.Extensions.Color4Extensions;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Framework.Screens;
|
using osu.Framework.Screens;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Overlays.SearchableList;
|
using osu.Game.Overlays.SearchableList;
|
||||||
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osuTK;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Screens.Multi
|
namespace osu.Game.Screens.Multi
|
||||||
@ -43,7 +46,7 @@ namespace osu.Game.Screens.Multi
|
|||||||
{
|
{
|
||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
Origin = Anchor.BottomLeft,
|
Origin = Anchor.BottomLeft,
|
||||||
X = -ScreenTitle.ICON_WIDTH,
|
X = -MultiHeaderTitle.ICON_WIDTH,
|
||||||
},
|
},
|
||||||
breadcrumbs = new HeaderBreadcrumbControl(stack)
|
breadcrumbs = new HeaderBreadcrumbControl(stack)
|
||||||
{
|
{
|
||||||
@ -70,18 +73,84 @@ namespace osu.Game.Screens.Multi
|
|||||||
breadcrumbs.StripColour = colours.Green;
|
breadcrumbs.StripColour = colours.Green;
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MultiHeaderTitle : ScreenTitle
|
private class MultiHeaderTitle : CompositeDrawable, IHasAccentColour
|
||||||
{
|
{
|
||||||
|
public const float ICON_WIDTH = ICON_SIZE + spacing;
|
||||||
|
|
||||||
|
public const float ICON_SIZE = 25;
|
||||||
|
private const float spacing = 6;
|
||||||
|
private const int text_offset = 2;
|
||||||
|
|
||||||
|
private SpriteIcon iconSprite;
|
||||||
|
private readonly OsuSpriteText titleText, pageText;
|
||||||
|
|
||||||
public IMultiplayerSubScreen Screen
|
public IMultiplayerSubScreen Screen
|
||||||
{
|
{
|
||||||
set => Section = value.ShortTitle.ToLowerInvariant();
|
set => pageText.Text = value.ShortTitle.ToLowerInvariant();
|
||||||
|
}
|
||||||
|
|
||||||
|
protected string Title
|
||||||
|
{
|
||||||
|
set => titleText.Text = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Color4 AccentColour
|
||||||
|
{
|
||||||
|
get => pageText.Colour;
|
||||||
|
set => pageText.Colour = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MultiHeaderTitle()
|
||||||
|
: base()
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
|
||||||
|
InternalChildren = new Drawable[]
|
||||||
|
{
|
||||||
|
new FillFlowContainer
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both,
|
||||||
|
Spacing = new Vector2(spacing, 0),
|
||||||
|
Direction = FillDirection.Horizontal,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
iconSprite = new SpriteIcon
|
||||||
|
{
|
||||||
|
Size = new Vector2(ICON_SIZE),
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre
|
||||||
|
},
|
||||||
|
titleText = new OsuSpriteText
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Font = OsuFont.GetFont(size: 20, weight: FontWeight.Bold),
|
||||||
|
Margin = new MarginPadding { Bottom = text_offset }
|
||||||
|
},
|
||||||
|
new Circle
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Size = new Vector2(4),
|
||||||
|
Colour = Color4.Gray,
|
||||||
|
},
|
||||||
|
pageText = new OsuSpriteText
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Font = OsuFont.GetFont(size: 20),
|
||||||
|
Margin = new MarginPadding { Bottom = text_offset }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
Title = "multi";
|
Title = "multi";
|
||||||
Icon = OsuIcon.Multi;
|
iconSprite.Icon = OsuIcon.Multi;
|
||||||
AccentColour = colours.Yellow;
|
AccentColour = colours.Yellow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user