1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-16 05:02:56 +08:00

Merge branch 'menu-mvvm' into menu-bar

This commit is contained in:
smoogipooo 2017-08-28 12:52:49 +09:00
commit 41b162d9e3
5 changed files with 99 additions and 63 deletions

@ -1 +1 @@
Subproject commit 8fe24d449fdcb975f5a799a40d92377116dd7d4f
Subproject commit 2958d6fda1be252a0f479609090e72814b177c91

View File

@ -8,6 +8,7 @@ using osu.Framework.Audio.Sample;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Sprites;
using osu.Framework.Graphics.UserInterface;
using osu.Framework.Input;
using osu.Game.Graphics.Sprites;
@ -54,8 +55,7 @@ namespace osu.Game.Graphics.UserInterface
private SampleChannel sampleClick;
private SampleChannel sampleHover;
private OsuSpriteText text;
private OsuSpriteText textBold;
private TextContainer text;
public DrawableOsuContextMenuItem(Menu<TItem> menu, TItem item)
: base(item)
@ -79,13 +79,13 @@ namespace osu.Game.Graphics.UserInterface
switch (Item.Type)
{
case MenuItemType.Standard:
textBold.Colour = text.Colour = Color4.White;
text.Colour = Color4.White;
break;
case MenuItemType.Destructive:
textBold.Colour = text.Colour = Color4.Red;
text.Colour = Color4.Red;
break;
case MenuItemType.Highlighted:
textBold.Colour = text.Colour = OsuColour.FromHex(@"ffcc22");
text.Colour = OsuColour.FromHex(@"ffcc22");
break;
}
}
@ -93,15 +93,15 @@ namespace osu.Game.Graphics.UserInterface
protected override bool OnHover(InputState state)
{
sampleHover.Play();
textBold.FadeIn(transition_length, Easing.OutQuint);
text.FadeOut(transition_length, Easing.OutQuint);
text.BoldText.FadeIn(transition_length, Easing.OutQuint);
text.NormalText.FadeOut(transition_length, Easing.OutQuint);
return base.OnHover(state);
}
protected override void OnHoverLost(InputState state)
{
textBold.FadeOut(transition_length, Easing.OutQuint);
text.FadeIn(transition_length, Easing.OutQuint);
text.BoldText.FadeOut(transition_length, Easing.OutQuint);
text.NormalText.FadeIn(transition_length, Easing.OutQuint);
base.OnHoverLost(state);
}
@ -111,34 +111,52 @@ namespace osu.Game.Graphics.UserInterface
return base.OnClick(state);
}
protected override Drawable CreateContent() => new Container
protected override Drawable CreateContent() => text = new TextContainer();
private class TextContainer : Container, IHasText
{
AutoSizeAxes = Axes.Both,
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
Children = new Drawable[]
public string Text
{
text = new OsuSpriteText
get { return NormalText.Text; }
set
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
TextSize = text_size,
Text = Item.Text,
Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL },
},
textBold = new OsuSpriteText
{
AlwaysPresent = true,
Alpha = 0,
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
TextSize = text_size,
Text = Item.Text,
Font = @"Exo2.0-Bold",
Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL },
NormalText.Text = value;
BoldText.Text = value;
}
}
};
public readonly SpriteText NormalText;
public readonly SpriteText BoldText;
public TextContainer()
{
Anchor = Anchor.CentreLeft;
Origin = Anchor.CentreLeft;
AutoSizeAxes = Axes.Both;
Children = new Drawable[]
{
NormalText = new OsuSpriteText
{
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
TextSize = text_size,
Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL },
},
BoldText = new OsuSpriteText
{
AlwaysPresent = true,
Alpha = 0,
Anchor = Anchor.CentreLeft,
Origin = Anchor.CentreLeft,
TextSize = text_size,
Font = @"Exo2.0-Bold",
Margin = new MarginPadding { Horizontal = margin_horizontal, Vertical = MARGIN_VERTICAL },
}
};
}
}
}
#endregion
}

View File

@ -81,8 +81,7 @@ namespace osu.Game.Graphics.UserInterface
{
public readonly Bindable<Color4?> AccentColour = new Bindable<Color4?>();
private SpriteIcon chevron;
protected OsuSpriteText Label;
private TextContainer textContainer;
private Color4 nonAccentHoverColour;
private Color4 nonAccentSelectedColour;
@ -117,35 +116,50 @@ namespace osu.Game.Graphics.UserInterface
protected override void UpdateForegroundColour()
{
base.UpdateForegroundColour();
chevron.Alpha = IsHovered ? 1 : 0;
textContainer.Chevron.Alpha = IsHovered ? 1 : 0;
}
protected override Drawable CreateContent() => new FillFlowContainer
protected override Drawable CreateContent() => textContainer = new TextContainer();
protected class TextContainer : FillFlowContainer, IHasText
{
Direction = FillDirection.Horizontal,
RelativeSizeAxes = Axes.X,
AutoSizeAxes = Axes.Y,
Children = new Drawable[]
public string Text
{
chevron = new SpriteIcon
{
AlwaysPresent = true,
Icon = FontAwesome.fa_chevron_right,
Colour = Color4.Black,
Alpha = 0.5f,
Size = new Vector2(8),
Margin = new MarginPadding { Left = 3, Right = 3 },
Origin = Anchor.CentreLeft,
Anchor = Anchor.CentreLeft,
},
Label = new OsuSpriteText
{
Text = Item.Text,
Origin = Anchor.CentreLeft,
Anchor = Anchor.CentreLeft,
}
get { return Label.Text; }
set { Label.Text = value; }
}
};
public readonly OsuSpriteText Label;
public readonly SpriteIcon Chevron;
public TextContainer()
{
RelativeSizeAxes = Axes.X;
AutoSizeAxes = Axes.Y;
Direction = FillDirection.Horizontal;
Children = new Drawable[]
{
Chevron = new SpriteIcon
{
AlwaysPresent = true,
Icon = FontAwesome.fa_chevron_right,
Colour = Color4.Black,
Alpha = 0.5f,
Size = new Vector2(8),
Margin = new MarginPadding { Left = 3, Right = 3 },
Origin = Anchor.CentreLeft,
Anchor = Anchor.CentreLeft,
},
Label = new OsuSpriteText
{
Origin = Anchor.CentreLeft,
Anchor = Anchor.CentreLeft,
}
};
}
}
}
#endregion
}

View File

@ -181,9 +181,9 @@ namespace osu.Game.Graphics.UserInterface
protected override DrawableMenuItem CreateDrawableMenuItem(DropdownMenuItem<T> item)
{
var poop = new DrawableOsuTabDropdownMenuItem(this, item);
poop.AccentColour.BindTo(AccentColour);
return poop;
var result = new DrawableOsuTabDropdownMenuItem(this, item);
result.AccentColour.BindTo(AccentColour);
return result;
}
private class DrawableOsuTabDropdownMenuItem : DrawableOsuDropdownMenuItem

View File

@ -316,9 +316,13 @@ namespace osu.Game.Overlays.Settings.Sections.General
: base(item)
{
Foreground.Padding = new MarginPadding { Top = 5, Bottom = 5, Left = 10, Right = 5 };
Label.Margin = new MarginPadding { Left = UserDropdownHeader.LABEL_LEFT_MARGIN - 11 };
CornerRadius = 5;
}
protected override Drawable CreateContent() => new TextContainer
{
Label = { Margin = new MarginPadding { Left = UserDropdownHeader.LABEL_LEFT_MARGIN - 11 } }
};
}
}