mirror of
https://github.com/ppy/osu.git
synced 2024-11-19 10:52:55 +08:00
Merge branch 'master' into Private_Messages
This commit is contained in:
commit
82757af482
@ -1 +1 @@
|
|||||||
Subproject commit aebfa5bc5c634c1fd0c103e0c17518e5111a67c7
|
Subproject commit 804a4b81b89cb4569af5221e6fa2296d559c28fb
|
@ -36,6 +36,11 @@ namespace osu.Game.Beatmaps
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasVideo { get; set; }
|
public bool HasVideo { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Whether or not this beatmap set has a storyboard.
|
||||||
|
/// </summary>
|
||||||
|
public bool HasStoryboard { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The different sizes of cover art for this beatmap set.
|
/// The different sizes of cover art for this beatmap set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
79
osu.Game/Beatmaps/Drawables/UpdateableBeatmapSetCover.cs
Normal file
79
osu.Game/Beatmaps/Drawables/UpdateableBeatmapSetCover.cs
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Graphics.Shapes;
|
||||||
|
using OpenTK.Graphics;
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps.Drawables
|
||||||
|
{
|
||||||
|
public class UpdateableBeatmapSetCover : Container
|
||||||
|
{
|
||||||
|
private Drawable displayedCover;
|
||||||
|
|
||||||
|
private BeatmapSetInfo beatmapSet;
|
||||||
|
public BeatmapSetInfo BeatmapSet
|
||||||
|
{
|
||||||
|
get { return beatmapSet; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == beatmapSet) return;
|
||||||
|
beatmapSet = value;
|
||||||
|
|
||||||
|
if (IsLoaded)
|
||||||
|
updateCover();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private BeatmapSetCoverType coverType = BeatmapSetCoverType.Cover;
|
||||||
|
public BeatmapSetCoverType CoverType
|
||||||
|
{
|
||||||
|
get { return coverType; }
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == coverType) return;
|
||||||
|
coverType = value;
|
||||||
|
|
||||||
|
if (IsLoaded)
|
||||||
|
updateCover();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public UpdateableBeatmapSetCover()
|
||||||
|
{
|
||||||
|
Child = new Box
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Colour = Color4.Black,
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void LoadComplete()
|
||||||
|
{
|
||||||
|
base.LoadComplete();
|
||||||
|
updateCover();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateCover()
|
||||||
|
{
|
||||||
|
displayedCover?.FadeOut(400);
|
||||||
|
displayedCover?.Expire();
|
||||||
|
displayedCover = null;
|
||||||
|
|
||||||
|
if (beatmapSet != null)
|
||||||
|
{
|
||||||
|
Add(displayedCover = new DelayedLoadWrapper(
|
||||||
|
new BeatmapSetCover(beatmapSet, coverType)
|
||||||
|
{
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
FillMode = FillMode.Fill,
|
||||||
|
OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out),
|
||||||
|
})
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -30,6 +30,9 @@ namespace osu.Game.Online.API.Requests
|
|||||||
[JsonProperty(@"video")]
|
[JsonProperty(@"video")]
|
||||||
private bool hasVideo { get; set; }
|
private bool hasVideo { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(@"storyboard")]
|
||||||
|
private bool hasStoryboard { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"status")]
|
[JsonProperty(@"status")]
|
||||||
private BeatmapSetOnlineStatus status { get; set; }
|
private BeatmapSetOnlineStatus status { get; set; }
|
||||||
|
|
||||||
@ -65,6 +68,7 @@ namespace osu.Game.Online.API.Requests
|
|||||||
BPM = bpm,
|
BPM = bpm,
|
||||||
Status = status,
|
Status = status,
|
||||||
HasVideo = hasVideo,
|
HasVideo = hasVideo,
|
||||||
|
HasStoryboard = hasStoryboard,
|
||||||
Submitted = submitted,
|
Submitted = submitted,
|
||||||
Ranked = ranked,
|
Ranked = ranked,
|
||||||
LastUpdated = lastUpdated,
|
LastUpdated = lastUpdated,
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
@ -16,6 +17,6 @@ namespace osu.Game.Online.Multiplayer
|
|||||||
public Bindable<GameType> Type = new Bindable<GameType>();
|
public Bindable<GameType> Type = new Bindable<GameType>();
|
||||||
public Bindable<BeatmapInfo> Beatmap = new Bindable<BeatmapInfo>();
|
public Bindable<BeatmapInfo> Beatmap = new Bindable<BeatmapInfo>();
|
||||||
public Bindable<int?> MaxParticipants = new Bindable<int?>();
|
public Bindable<int?> MaxParticipants = new Bindable<int?>();
|
||||||
public Bindable<User[]> Participants = new Bindable<User[]>();
|
public Bindable<IEnumerable<User>> Participants = new Bindable<IEnumerable<User>>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,8 +49,8 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
|
|
||||||
fields.Children = new Drawable[]
|
fields.Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new Field("made by", BeatmapSet.Metadata.Author.Username, @"Exo2.0-RegularItalic"),
|
new Field("mapped by", BeatmapSet.Metadata.Author.Username, @"Exo2.0-RegularItalic"),
|
||||||
new Field("submitted on", online.Submitted.ToString(@"MMM d, yyyy"), @"Exo2.0-Bold")
|
new Field("submitted on", online.Submitted.ToString(@"MMMM d, yyyy"), @"Exo2.0-Bold")
|
||||||
{
|
{
|
||||||
Margin = new MarginPadding { Top = 5 },
|
Margin = new MarginPadding { Top = 5 },
|
||||||
},
|
},
|
||||||
@ -58,11 +58,11 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
|
|
||||||
if (online.Ranked.HasValue)
|
if (online.Ranked.HasValue)
|
||||||
{
|
{
|
||||||
fields.Add(new Field("ranked on ", online.Ranked.Value.ToString(@"MMM d, yyyy"), @"Exo2.0-Bold"));
|
fields.Add(new Field("ranked on", online.Ranked.Value.ToString(@"MMMM d, yyyy"), @"Exo2.0-Bold"));
|
||||||
}
|
}
|
||||||
else if (online.LastUpdated.HasValue)
|
else if (online.LastUpdated.HasValue)
|
||||||
{
|
{
|
||||||
fields.Add(new Field("last updated on ", online.LastUpdated.Value.ToString(@"MMM d, yyyy"), @"Exo2.0-Bold"));
|
fields.Add(new Field("last updated on", online.LastUpdated.Value.ToString(@"MMMM d, yyyy"), @"Exo2.0-Bold"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,7 +26,7 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
private const float buttons_spacing = 5;
|
private const float buttons_spacing = 5;
|
||||||
|
|
||||||
private readonly Box tabsBg;
|
private readonly Box tabsBg;
|
||||||
private readonly Container coverContainer;
|
private readonly UpdateableBeatmapSetCover cover;
|
||||||
private readonly OsuSpriteText title, artist;
|
private readonly OsuSpriteText title, artist;
|
||||||
private readonly Container noVideoButtons;
|
private readonly Container noVideoButtons;
|
||||||
private readonly FillFlowContainer videoButtons;
|
private readonly FillFlowContainer videoButtons;
|
||||||
@ -36,7 +36,6 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
public Details Details;
|
public Details Details;
|
||||||
|
|
||||||
private BeatmapManager beatmaps;
|
private BeatmapManager beatmaps;
|
||||||
private DelayedLoadWrapper cover;
|
|
||||||
|
|
||||||
public readonly BeatmapPicker Picker;
|
public readonly BeatmapPicker Picker;
|
||||||
|
|
||||||
@ -62,8 +61,8 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
title.Text = BeatmapSet?.Metadata.Title ?? string.Empty;
|
title.Text = BeatmapSet?.Metadata.Title ?? string.Empty;
|
||||||
artist.Text = BeatmapSet?.Metadata.Artist ?? string.Empty;
|
artist.Text = BeatmapSet?.Metadata.Artist ?? string.Empty;
|
||||||
onlineStatusPill.Status = BeatmapSet?.OnlineInfo.Status ?? BeatmapSetOnlineStatus.None;
|
onlineStatusPill.Status = BeatmapSet?.OnlineInfo.Status ?? BeatmapSetOnlineStatus.None;
|
||||||
|
cover.BeatmapSet = BeatmapSet;
|
||||||
|
|
||||||
cover?.FadeOut(400, Easing.Out);
|
|
||||||
if (BeatmapSet != null)
|
if (BeatmapSet != null)
|
||||||
{
|
{
|
||||||
downloadButtonsContainer.FadeIn(transition_duration);
|
downloadButtonsContainer.FadeIn(transition_duration);
|
||||||
@ -71,19 +70,6 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
|
|
||||||
noVideoButtons.FadeTo(BeatmapSet.OnlineInfo.HasVideo ? 0 : 1, transition_duration);
|
noVideoButtons.FadeTo(BeatmapSet.OnlineInfo.HasVideo ? 0 : 1, transition_duration);
|
||||||
videoButtons.FadeTo(BeatmapSet.OnlineInfo.HasVideo ? 1 : 0, transition_duration);
|
videoButtons.FadeTo(BeatmapSet.OnlineInfo.HasVideo ? 1 : 0, transition_duration);
|
||||||
|
|
||||||
coverContainer.Add(cover = new DelayedLoadWrapper(
|
|
||||||
new BeatmapSetCover(BeatmapSet)
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
FillMode = FillMode.Fill,
|
|
||||||
OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out),
|
|
||||||
}, 300)
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -130,12 +116,7 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new Box
|
cover = new UpdateableBeatmapSetCover
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Colour = Color4.Black,
|
|
||||||
},
|
|
||||||
coverContainer = new Container
|
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
},
|
},
|
||||||
|
@ -149,7 +149,7 @@ namespace osu.Game.Overlays.Direct
|
|||||||
{
|
{
|
||||||
new OsuSpriteText
|
new OsuSpriteText
|
||||||
{
|
{
|
||||||
Text = $"from {SetInfo.Metadata.Source}",
|
Text = $"{SetInfo.Metadata.Source}",
|
||||||
TextSize = 14,
|
TextSize = 14,
|
||||||
Shadow = false,
|
Shadow = false,
|
||||||
Colour = colours.Gray5,
|
Colour = colours.Gray5,
|
||||||
@ -195,18 +195,18 @@ namespace osu.Game.Overlays.Direct
|
|||||||
new Statistic(FontAwesome.fa_heart, SetInfo.OnlineInfo?.FavouriteCount ?? 0),
|
new Statistic(FontAwesome.fa_heart, SetInfo.OnlineInfo?.FavouriteCount ?? 0),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
playButton = new PlayButton(SetInfo)
|
|
||||||
{
|
|
||||||
Margin = new MarginPadding { Top = 5, Left = 10 },
|
|
||||||
Size = new Vector2(30),
|
|
||||||
Alpha = 0,
|
|
||||||
},
|
|
||||||
statusContainer = new FillFlowContainer
|
statusContainer = new FillFlowContainer
|
||||||
{
|
{
|
||||||
AutoSizeAxes = Axes.Both,
|
AutoSizeAxes = Axes.Both,
|
||||||
Margin = new MarginPadding { Top = 5, Left = 5 },
|
Margin = new MarginPadding { Top = 5, Left = 5 },
|
||||||
Spacing = new Vector2(5),
|
Spacing = new Vector2(5),
|
||||||
},
|
},
|
||||||
|
playButton = new PlayButton(SetInfo)
|
||||||
|
{
|
||||||
|
Margin = new MarginPadding { Top = 5, Left = 10 },
|
||||||
|
Size = new Vector2(30),
|
||||||
|
Alpha = 0,
|
||||||
|
},
|
||||||
});
|
});
|
||||||
|
|
||||||
if (SetInfo.OnlineInfo?.HasVideo ?? false)
|
if (SetInfo.OnlineInfo?.HasVideo ?? false)
|
||||||
@ -214,24 +214,31 @@ namespace osu.Game.Overlays.Direct
|
|||||||
statusContainer.Add(new IconPill(FontAwesome.fa_film));
|
statusContainer.Add(new IconPill(FontAwesome.fa_film));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (SetInfo.OnlineInfo?.HasStoryboard ?? false)
|
||||||
|
{
|
||||||
|
statusContainer.Add(new IconPill(FontAwesome.fa_image));
|
||||||
|
}
|
||||||
|
|
||||||
statusContainer.Add(new BeatmapSetOnlineStatusPill(12, new MarginPadding { Horizontal = 10, Vertical = 5 })
|
statusContainer.Add(new BeatmapSetOnlineStatusPill(12, new MarginPadding { Horizontal = 10, Vertical = 5 })
|
||||||
{
|
{
|
||||||
Status = SetInfo.OnlineInfo?.Status ?? BeatmapSetOnlineStatus.None,
|
Status = SetInfo.OnlineInfo?.Status ?? BeatmapSetOnlineStatus.None,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
PreviewPlaying.ValueChanged += _ => updateStatusContainer();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override bool OnHover(InputState state)
|
protected override bool OnHover(InputState state)
|
||||||
{
|
{
|
||||||
statusContainer.FadeOut(120, Easing.InOutQuint);
|
updateStatusContainer();
|
||||||
|
|
||||||
return base.OnHover(state);
|
return base.OnHover(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void OnHoverLost(InputState state)
|
protected override void OnHoverLost(InputState state)
|
||||||
{
|
{
|
||||||
base.OnHoverLost(state);
|
base.OnHoverLost(state);
|
||||||
|
updateStatusContainer();
|
||||||
statusContainer.FadeIn(120, Easing.InOutQuint);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateStatusContainer() => statusContainer.FadeTo(IsHovered || PreviewPlaying ? 0 : 1, 120, Easing.InOutQuint);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,8 +27,6 @@ namespace osu.Game.Overlays.Direct
|
|||||||
{
|
{
|
||||||
public readonly BeatmapSetInfo SetInfo;
|
public readonly BeatmapSetInfo SetInfo;
|
||||||
|
|
||||||
protected Box BlackBackground;
|
|
||||||
|
|
||||||
private const double hover_transition_time = 400;
|
private const double hover_transition_time = 400;
|
||||||
|
|
||||||
private Container content;
|
private Container content;
|
||||||
@ -81,12 +79,6 @@ namespace osu.Game.Overlays.Direct
|
|||||||
EdgeEffect = edgeEffectNormal,
|
EdgeEffect = edgeEffectNormal,
|
||||||
Children = new[]
|
Children = new[]
|
||||||
{
|
{
|
||||||
// temporary blackness until the actual background loads.
|
|
||||||
BlackBackground = new Box
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Colour = Color4.Black,
|
|
||||||
},
|
|
||||||
CreateBackground(),
|
CreateBackground(),
|
||||||
progressBar = new ProgressBar
|
progressBar = new ProgressBar
|
||||||
{
|
{
|
||||||
@ -215,21 +207,10 @@ namespace osu.Game.Overlays.Direct
|
|||||||
return icons;
|
return icons;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Drawable CreateBackground() => new DelayedLoadWrapper(
|
protected Drawable CreateBackground() => new UpdateableBeatmapSetCover
|
||||||
new BeatmapSetCover(SetInfo)
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
FillMode = FillMode.Fill,
|
|
||||||
OnLoadComplete = d =>
|
|
||||||
{
|
|
||||||
d.FadeInFromZero(400, Easing.Out);
|
|
||||||
BlackBackground.Delay(400).FadeOut();
|
|
||||||
},
|
|
||||||
}, 300)
|
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
BeatmapSet = SetInfo,
|
||||||
};
|
};
|
||||||
|
|
||||||
public class Statistic : FillFlowContainer
|
public class Statistic : FillFlowContainer
|
||||||
|
@ -126,7 +126,7 @@ namespace osu.Game.Overlays.Direct
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
icon.Icon = playing ? FontAwesome.fa_pause : FontAwesome.fa_play;
|
icon.Icon = playing ? FontAwesome.fa_stop : FontAwesome.fa_play;
|
||||||
icon.FadeColour(playing || IsHovered ? hoverColour : Color4.White, 120, Easing.InOutQuint);
|
icon.FadeColour(playing || IsHovered ? hoverColour : Color4.White, 120, Easing.InOutQuint);
|
||||||
|
|
||||||
if (playing)
|
if (playing)
|
||||||
|
@ -24,19 +24,13 @@ namespace osu.Game.Overlays.Profile.Sections.Historical
|
|||||||
this.playCount = playCount;
|
this.playCount = playCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Drawable CreateLeftVisual() => new DelayedLoadWrapper(new BeatmapSetCover(beatmap.BeatmapSet, BeatmapSetCoverType.List)
|
protected override Drawable CreateLeftVisual() => new UpdateableBeatmapSetCover
|
||||||
{
|
{
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
FillMode = FillMode.Fit,
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
OnLoadComplete = d => d.FadeInFromZero(500, Easing.OutQuint)
|
|
||||||
})
|
|
||||||
{
|
|
||||||
Origin = Anchor.CentreLeft,
|
|
||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
RelativeSizeAxes = Axes.None,
|
Origin = Anchor.CentreLeft,
|
||||||
Size = new Vector2(80, 50),
|
Size = new Vector2(80, 50),
|
||||||
|
BeatmapSet = beatmap.BeatmapSet,
|
||||||
|
CoverType = BeatmapSetCoverType.List,
|
||||||
};
|
};
|
||||||
|
|
||||||
[BackgroundDependencyLoader(true)]
|
[BackgroundDependencyLoader(true)]
|
||||||
|
79
osu.Game/Screens/Multi/Components/BeatmapTitle.cs
Normal file
79
osu.Game/Screens/Multi/Components/BeatmapTitle.cs
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Framework.Localisation;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Graphics.Sprites;
|
||||||
|
|
||||||
|
namespace osu.Game.Screens.Multi.Components
|
||||||
|
{
|
||||||
|
public class BeatmapTitle : FillFlowContainer<OsuSpriteText>
|
||||||
|
{
|
||||||
|
private readonly OsuSpriteText beatmapTitle, beatmapDash, beatmapArtist;
|
||||||
|
|
||||||
|
private LocalisationEngine localisation;
|
||||||
|
|
||||||
|
public float TextSize
|
||||||
|
{
|
||||||
|
set { beatmapTitle.TextSize = beatmapDash.TextSize = beatmapArtist.TextSize = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
private BeatmapInfo beatmap;
|
||||||
|
|
||||||
|
public BeatmapInfo Beatmap
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == beatmap) return;
|
||||||
|
beatmap = value;
|
||||||
|
|
||||||
|
if (IsLoaded)
|
||||||
|
updateText();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BeatmapTitle()
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
Direction = FillDirection.Horizontal;
|
||||||
|
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
beatmapTitle = new OsuSpriteText { Font = @"Exo2.0-BoldItalic", },
|
||||||
|
beatmapDash = new OsuSpriteText { Font = @"Exo2.0-BoldItalic", },
|
||||||
|
beatmapArtist = new OsuSpriteText { Font = @"Exo2.0-RegularItalic", },
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(LocalisationEngine localisation)
|
||||||
|
{
|
||||||
|
this.localisation = localisation;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void LoadComplete()
|
||||||
|
{
|
||||||
|
base.LoadComplete();
|
||||||
|
updateText();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateText()
|
||||||
|
{
|
||||||
|
if (beatmap == null)
|
||||||
|
{
|
||||||
|
beatmapTitle.Current = beatmapArtist.Current = null;
|
||||||
|
beatmapTitle.Text = "Changing map";
|
||||||
|
beatmapDash.Text = beatmapArtist.Text = string.Empty;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
beatmapTitle.Current = localisation.GetUnicodePreference(beatmap.Metadata.TitleUnicode, beatmap.Metadata.Title);
|
||||||
|
beatmapDash.Text = @" - ";
|
||||||
|
beatmapArtist.Current = localisation.GetUnicodePreference(beatmap.Metadata.ArtistUnicode, beatmap.Metadata.Artist);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
70
osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs
Normal file
70
osu.Game/Screens/Multi/Components/BeatmapTypeInfo.cs
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osu.Game.Online.Multiplayer;
|
||||||
|
using OpenTK;
|
||||||
|
|
||||||
|
namespace osu.Game.Screens.Multi.Components
|
||||||
|
{
|
||||||
|
public class BeatmapTypeInfo : FillFlowContainer
|
||||||
|
{
|
||||||
|
private readonly ModeTypeInfo modeTypeInfo;
|
||||||
|
private readonly BeatmapTitle beatmapTitle;
|
||||||
|
private readonly OsuSpriteText beatmapAuthor;
|
||||||
|
|
||||||
|
public BeatmapInfo Beatmap
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
modeTypeInfo.Beatmap = beatmapTitle.Beatmap = value;
|
||||||
|
beatmapAuthor.Text = value == null ? string.Empty : $"mapped by {value.Metadata.Author}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameType Type
|
||||||
|
{
|
||||||
|
set { modeTypeInfo.Type = value; }
|
||||||
|
}
|
||||||
|
|
||||||
|
public BeatmapTypeInfo()
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
Direction = FillDirection.Horizontal;
|
||||||
|
LayoutDuration = 100;
|
||||||
|
Spacing = new Vector2(5f, 0f);
|
||||||
|
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
modeTypeInfo = new ModeTypeInfo(),
|
||||||
|
new Container
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.X,
|
||||||
|
Height = 30,
|
||||||
|
Margin = new MarginPadding { Left = 5 },
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
beatmapTitle = new BeatmapTitle(),
|
||||||
|
beatmapAuthor = new OsuSpriteText
|
||||||
|
{
|
||||||
|
Anchor = Anchor.BottomLeft,
|
||||||
|
Origin = Anchor.BottomLeft,
|
||||||
|
TextSize = 14,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
[BackgroundDependencyLoader]
|
||||||
|
private void load(OsuColour colours)
|
||||||
|
{
|
||||||
|
beatmapAuthor.Colour = colours.Gray9;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -11,7 +11,6 @@ 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.Input;
|
using osu.Framework.Input;
|
||||||
using osu.Framework.Localisation;
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.Drawables;
|
using osu.Game.Beatmaps.Drawables;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
@ -42,7 +41,7 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
private readonly Bindable<RoomStatus> statusBind = new Bindable<RoomStatus>();
|
private readonly Bindable<RoomStatus> statusBind = new Bindable<RoomStatus>();
|
||||||
private readonly Bindable<GameType> typeBind = new Bindable<GameType>();
|
private readonly Bindable<GameType> typeBind = new Bindable<GameType>();
|
||||||
private readonly Bindable<BeatmapInfo> beatmapBind = new Bindable<BeatmapInfo>();
|
private readonly Bindable<BeatmapInfo> beatmapBind = new Bindable<BeatmapInfo>();
|
||||||
private readonly Bindable<User[]> participantsBind = new Bindable<User[]>();
|
private readonly Bindable<IEnumerable<User>> participantsBind = new Bindable<IEnumerable<User>>();
|
||||||
|
|
||||||
public readonly Room Room;
|
public readonly Room Room;
|
||||||
|
|
||||||
@ -108,12 +107,13 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours, LocalisationEngine localisation)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
Box sideStrip;
|
Box sideStrip;
|
||||||
Container coverContainer;
|
UpdateableBeatmapSetCover cover;
|
||||||
OsuSpriteText name, status, beatmapTitle, beatmapDash, beatmapArtist;
|
OsuSpriteText name, status;
|
||||||
ParticipantInfo participantInfo;
|
ParticipantInfo participantInfo;
|
||||||
|
BeatmapTitle beatmapTitle;
|
||||||
ModeTypeInfo modeTypeInfo;
|
ModeTypeInfo modeTypeInfo;
|
||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
@ -146,24 +146,12 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
RelativeSizeAxes = Axes.Y,
|
RelativeSizeAxes = Axes.Y,
|
||||||
Width = side_strip_width,
|
Width = side_strip_width,
|
||||||
},
|
},
|
||||||
new Container
|
cover = new UpdateableBeatmapSetCover
|
||||||
{
|
{
|
||||||
Width = cover_width,
|
Width = cover_width,
|
||||||
RelativeSizeAxes = Axes.Y,
|
RelativeSizeAxes = Axes.Y,
|
||||||
Masking = true,
|
Masking = true,
|
||||||
Margin = new MarginPadding { Left = side_strip_width },
|
Margin = new MarginPadding { Left = side_strip_width },
|
||||||
Children = new Drawable[]
|
|
||||||
{
|
|
||||||
new Box
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Colour = Color4.Black,
|
|
||||||
},
|
|
||||||
coverContainer = new Container
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
new Container
|
new Container
|
||||||
{
|
{
|
||||||
@ -205,30 +193,10 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
TextSize = 14,
|
TextSize = 14,
|
||||||
Font = @"Exo2.0-Bold",
|
Font = @"Exo2.0-Bold",
|
||||||
},
|
},
|
||||||
new FillFlowContainer<OsuSpriteText>
|
beatmapTitle = new BeatmapTitle
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.X,
|
TextSize = 14,
|
||||||
AutoSizeAxes = Axes.Y,
|
Colour = colours.Gray9
|
||||||
Colour = colours.Gray9,
|
|
||||||
Direction = FillDirection.Horizontal,
|
|
||||||
Children = new[]
|
|
||||||
{
|
|
||||||
beatmapTitle = new OsuSpriteText
|
|
||||||
{
|
|
||||||
TextSize = 14,
|
|
||||||
Font = @"Exo2.0-BoldItalic",
|
|
||||||
},
|
|
||||||
beatmapDash = new OsuSpriteText
|
|
||||||
{
|
|
||||||
TextSize = 14,
|
|
||||||
Font = @"Exo2.0-BoldItalic",
|
|
||||||
},
|
|
||||||
beatmapArtist = new OsuSpriteText
|
|
||||||
{
|
|
||||||
TextSize = 14,
|
|
||||||
Font = @"Exo2.0-RegularItalic",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -259,34 +227,9 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
|
|
||||||
beatmapBind.ValueChanged += b =>
|
beatmapBind.ValueChanged += b =>
|
||||||
{
|
{
|
||||||
|
cover.BeatmapSet = b?.BeatmapSet;
|
||||||
|
beatmapTitle.Beatmap = b;
|
||||||
modeTypeInfo.Beatmap = b;
|
modeTypeInfo.Beatmap = b;
|
||||||
|
|
||||||
if (b != null)
|
|
||||||
{
|
|
||||||
coverContainer.FadeIn(transition_duration);
|
|
||||||
|
|
||||||
LoadComponentAsync(new BeatmapSetCover(b.BeatmapSet)
|
|
||||||
{
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
FillMode = FillMode.Fill,
|
|
||||||
OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out),
|
|
||||||
}, coverContainer.Add);
|
|
||||||
|
|
||||||
beatmapTitle.Current = localisation.GetUnicodePreference(b.Metadata.TitleUnicode, b.Metadata.Title);
|
|
||||||
beatmapDash.Text = @" - ";
|
|
||||||
beatmapArtist.Current = localisation.GetUnicodePreference(b.Metadata.ArtistUnicode, b.Metadata.Artist);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
coverContainer.FadeOut(transition_duration);
|
|
||||||
|
|
||||||
beatmapTitle.Current = null;
|
|
||||||
beatmapArtist.Current = null;
|
|
||||||
|
|
||||||
beatmapTitle.Text = "Changing map";
|
|
||||||
beatmapDash.Text = beatmapArtist.Text = string.Empty;
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
nameBind.BindTo(Room.Name);
|
nameBind.BindTo(Room.Name);
|
||||||
|
@ -64,6 +64,7 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
AutoSizeAxes = Axes.Both,
|
AutoSizeAxes = Axes.Both,
|
||||||
Direction = FillDirection.Horizontal,
|
Direction = FillDirection.Horizontal,
|
||||||
Spacing = new Vector2(5f, 0f),
|
Spacing = new Vector2(5f, 0f),
|
||||||
|
LayoutDuration = 100,
|
||||||
Children = new[]
|
Children = new[]
|
||||||
{
|
{
|
||||||
rulesetContainer = new Container
|
rulesetContainer = new Container
|
||||||
|
67
osu.Game/Screens/Multi/Components/ParticipantCount.cs
Normal file
67
osu.Game/Screens/Multi/Components/ParticipantCount.cs
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Game.Graphics.Sprites;
|
||||||
|
|
||||||
|
namespace osu.Game.Screens.Multi.Components
|
||||||
|
{
|
||||||
|
public class ParticipantCount : FillFlowContainer
|
||||||
|
{
|
||||||
|
private const float text_size = 30;
|
||||||
|
private const float transition_duration = 100;
|
||||||
|
|
||||||
|
private readonly OsuSpriteText count, slash, max;
|
||||||
|
|
||||||
|
public int Count
|
||||||
|
{
|
||||||
|
set => count.Text = value.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
public int? Max
|
||||||
|
{
|
||||||
|
set
|
||||||
|
{
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
slash.FadeOut(transition_duration);
|
||||||
|
max.FadeOut(transition_duration);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
slash.FadeIn(transition_duration);
|
||||||
|
max.Text = value.ToString();
|
||||||
|
max.FadeIn(transition_duration);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public ParticipantCount()
|
||||||
|
{
|
||||||
|
AutoSizeAxes = Axes.Both;
|
||||||
|
Direction = FillDirection.Horizontal;
|
||||||
|
LayoutDuration = transition_duration;
|
||||||
|
|
||||||
|
Children = new[]
|
||||||
|
{
|
||||||
|
count = new OsuSpriteText
|
||||||
|
{
|
||||||
|
TextSize = text_size,
|
||||||
|
Font = @"Exo2.0-Bold"
|
||||||
|
},
|
||||||
|
slash = new OsuSpriteText
|
||||||
|
{
|
||||||
|
Text = @"/",
|
||||||
|
TextSize = text_size,
|
||||||
|
Font = @"Exo2.0-Light"
|
||||||
|
},
|
||||||
|
max = new OsuSpriteText
|
||||||
|
{
|
||||||
|
TextSize = text_size,
|
||||||
|
Font = @"Exo2.0-Light"
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
@ -10,7 +11,6 @@ using osu.Framework.Graphics.Colour;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Graphics.Cursor;
|
using osu.Framework.Graphics.Cursor;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using osu.Framework.Localisation;
|
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.Drawables;
|
using osu.Game.Beatmaps.Drawables;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
@ -34,13 +34,15 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
private readonly Bindable<GameType> typeBind = new Bindable<GameType>();
|
private readonly Bindable<GameType> typeBind = new Bindable<GameType>();
|
||||||
private readonly Bindable<BeatmapInfo> beatmapBind = new Bindable<BeatmapInfo>();
|
private readonly Bindable<BeatmapInfo> beatmapBind = new Bindable<BeatmapInfo>();
|
||||||
private readonly Bindable<int?> maxParticipantsBind = new Bindable<int?>();
|
private readonly Bindable<int?> maxParticipantsBind = new Bindable<int?>();
|
||||||
private readonly Bindable<User[]> participantsBind = new Bindable<User[]>();
|
private readonly Bindable<IEnumerable<User>> participantsBind = new Bindable<IEnumerable<User>>();
|
||||||
|
|
||||||
private OsuColour colours;
|
private OsuColour colours;
|
||||||
private Box statusStrip;
|
private Box statusStrip;
|
||||||
private Container coverContainer;
|
private UpdateableBeatmapSetCover cover;
|
||||||
private FillFlowContainer topFlow, participantsFlow, participantNumbersFlow, infoPanelFlow;
|
private ParticipantCount participantCount;
|
||||||
|
private FillFlowContainer topFlow, participantsFlow;
|
||||||
private OsuSpriteText name, status;
|
private OsuSpriteText name, status;
|
||||||
|
private BeatmapTypeInfo beatmapTypeInfo;
|
||||||
private ScrollContainer participantsScroll;
|
private ScrollContainer participantsScroll;
|
||||||
private ParticipantInfo participantInfo;
|
private ParticipantInfo participantInfo;
|
||||||
|
|
||||||
@ -77,13 +79,10 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
private void load(OsuColour colours, LocalisationEngine localisation)
|
private void load(OsuColour colours)
|
||||||
{
|
{
|
||||||
this.colours = colours;
|
this.colours = colours;
|
||||||
|
|
||||||
ModeTypeInfo modeTypeInfo;
|
|
||||||
OsuSpriteText participants, participantsSlash, maxParticipants, beatmapTitle, beatmapDash, beatmapArtist, beatmapAuthor;
|
|
||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new Box
|
new Box
|
||||||
@ -105,21 +104,9 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
Masking = true,
|
Masking = true,
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
new Container
|
cover = new UpdateableBeatmapSetCover
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Children = new Drawable[]
|
|
||||||
{
|
|
||||||
new Box
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Colour = Color4.Black,
|
|
||||||
},
|
|
||||||
coverContainer = new Container
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
new Box
|
new Box
|
||||||
{
|
{
|
||||||
@ -132,32 +119,10 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
Padding = new MarginPadding(20),
|
Padding = new MarginPadding(20),
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
participantNumbersFlow = new FillFlowContainer
|
participantCount = new ParticipantCount
|
||||||
{
|
{
|
||||||
Anchor = Anchor.TopRight,
|
Anchor = Anchor.TopRight,
|
||||||
Origin = Anchor.TopRight,
|
Origin = Anchor.TopRight,
|
||||||
AutoSizeAxes = Axes.Both,
|
|
||||||
Direction = FillDirection.Horizontal,
|
|
||||||
LayoutDuration = transition_duration,
|
|
||||||
Children = new[]
|
|
||||||
{
|
|
||||||
participants = new OsuSpriteText
|
|
||||||
{
|
|
||||||
TextSize = 30,
|
|
||||||
Font = @"Exo2.0-Bold"
|
|
||||||
},
|
|
||||||
participantsSlash = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Text = @"/",
|
|
||||||
TextSize = 30,
|
|
||||||
Font = @"Exo2.0-Light"
|
|
||||||
},
|
|
||||||
maxParticipants = new OsuSpriteText
|
|
||||||
{
|
|
||||||
TextSize = 30,
|
|
||||||
Font = @"Exo2.0-Light"
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
name = new OsuSpriteText
|
name = new OsuSpriteText
|
||||||
{
|
{
|
||||||
@ -200,54 +165,7 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
TextSize = 14,
|
TextSize = 14,
|
||||||
Font = @"Exo2.0-Bold",
|
Font = @"Exo2.0-Bold",
|
||||||
},
|
},
|
||||||
infoPanelFlow = new FillFlowContainer
|
beatmapTypeInfo = new BeatmapTypeInfo(),
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.X,
|
|
||||||
Height = 30,
|
|
||||||
Direction = FillDirection.Horizontal,
|
|
||||||
LayoutDuration = transition_duration,
|
|
||||||
Spacing = new Vector2(5f, 0f),
|
|
||||||
Children = new Drawable[]
|
|
||||||
{
|
|
||||||
modeTypeInfo = new ModeTypeInfo(),
|
|
||||||
new Container
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.X,
|
|
||||||
RelativeSizeAxes = Axes.Y,
|
|
||||||
Margin = new MarginPadding { Left = 5 },
|
|
||||||
Children = new[]
|
|
||||||
{
|
|
||||||
new FillFlowContainer
|
|
||||||
{
|
|
||||||
AutoSizeAxes = Axes.Both,
|
|
||||||
Direction = FillDirection.Horizontal,
|
|
||||||
Children = new[]
|
|
||||||
{
|
|
||||||
beatmapTitle = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Font = @"Exo2.0-BoldItalic",
|
|
||||||
},
|
|
||||||
beatmapDash = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Font = @"Exo2.0-BoldItalic",
|
|
||||||
},
|
|
||||||
beatmapArtist = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Font = @"Exo2.0-RegularItalic",
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
beatmapAuthor = new OsuSpriteText
|
|
||||||
{
|
|
||||||
Anchor = Anchor.BottomLeft,
|
|
||||||
Origin = Anchor.BottomLeft,
|
|
||||||
TextSize = 14,
|
|
||||||
Colour = colours.Gray9,
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
@ -285,61 +203,19 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
|
|
||||||
nameBind.ValueChanged += n => name.Text = n;
|
nameBind.ValueChanged += n => name.Text = n;
|
||||||
hostBind.ValueChanged += h => participantInfo.Host = h;
|
hostBind.ValueChanged += h => participantInfo.Host = h;
|
||||||
typeBind.ValueChanged += t => modeTypeInfo.Type = t;
|
typeBind.ValueChanged += t => beatmapTypeInfo.Type = t;
|
||||||
|
maxParticipantsBind.ValueChanged += m => participantCount.Max = m;
|
||||||
statusBind.ValueChanged += displayStatus;
|
statusBind.ValueChanged += displayStatus;
|
||||||
|
|
||||||
beatmapBind.ValueChanged += b =>
|
beatmapBind.ValueChanged += b =>
|
||||||
{
|
{
|
||||||
modeTypeInfo.Beatmap = b;
|
cover.BeatmapSet = b?.BeatmapSet;
|
||||||
|
beatmapTypeInfo.Beatmap = b;
|
||||||
if (b != null)
|
|
||||||
{
|
|
||||||
coverContainer.FadeIn(transition_duration);
|
|
||||||
|
|
||||||
LoadComponentAsync(new BeatmapSetCover(b.BeatmapSet)
|
|
||||||
{
|
|
||||||
RelativeSizeAxes = Axes.Both,
|
|
||||||
Anchor = Anchor.Centre,
|
|
||||||
Origin = Anchor.Centre,
|
|
||||||
FillMode = FillMode.Fill,
|
|
||||||
OnLoadComplete = d => d.FadeInFromZero(400, Easing.Out),
|
|
||||||
}, coverContainer.Add);
|
|
||||||
|
|
||||||
beatmapTitle.Current = localisation.GetUnicodePreference(b.Metadata.TitleUnicode, b.Metadata.Title);
|
|
||||||
beatmapDash.Text = @" - ";
|
|
||||||
beatmapArtist.Current = localisation.GetUnicodePreference(b.Metadata.ArtistUnicode, b.Metadata.Artist);
|
|
||||||
beatmapAuthor.Text = $"mapped by {b.Metadata.Author}";
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
coverContainer.FadeOut(transition_duration);
|
|
||||||
|
|
||||||
beatmapTitle.Current = null;
|
|
||||||
beatmapArtist.Current = null;
|
|
||||||
|
|
||||||
beatmapTitle.Text = "Changing map";
|
|
||||||
beatmapDash.Text = beatmapArtist.Text = beatmapAuthor.Text = string.Empty;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
maxParticipantsBind.ValueChanged += m =>
|
|
||||||
{
|
|
||||||
if (m == null)
|
|
||||||
{
|
|
||||||
participantsSlash.FadeOut(transition_duration);
|
|
||||||
maxParticipants.FadeOut(transition_duration);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
participantsSlash.FadeIn(transition_duration);
|
|
||||||
maxParticipants.FadeIn(transition_duration);
|
|
||||||
maxParticipants.Text = m.ToString();
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
participantsBind.ValueChanged += p =>
|
participantsBind.ValueChanged += p =>
|
||||||
{
|
{
|
||||||
participants.Text = p.Length.ToString();
|
participantCount.Count = p.Count();
|
||||||
participantInfo.Participants = p;
|
participantInfo.Participants = p;
|
||||||
participantsFlow.ChildrenEnumerable = p.Select(u => new UserTile(u));
|
participantsFlow.ChildrenEnumerable = p.Select(u => new UserTile(u));
|
||||||
};
|
};
|
||||||
@ -367,10 +243,10 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
{
|
{
|
||||||
if (Room == null)
|
if (Room == null)
|
||||||
{
|
{
|
||||||
coverContainer.FadeOut(transition_duration);
|
cover.BeatmapSet = null;
|
||||||
participantsFlow.FadeOut(transition_duration);
|
participantsFlow.FadeOut(transition_duration);
|
||||||
participantNumbersFlow.FadeOut(transition_duration);
|
participantCount.FadeOut(transition_duration);
|
||||||
infoPanelFlow.FadeOut(transition_duration);
|
beatmapTypeInfo.FadeOut(transition_duration);
|
||||||
name.FadeOut(transition_duration);
|
name.FadeOut(transition_duration);
|
||||||
participantInfo.FadeOut(transition_duration);
|
participantInfo.FadeOut(transition_duration);
|
||||||
|
|
||||||
@ -379,8 +255,8 @@ namespace osu.Game.Screens.Multi.Components
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
participantsFlow.FadeIn(transition_duration);
|
participantsFlow.FadeIn(transition_duration);
|
||||||
participantNumbersFlow.FadeIn(transition_duration);
|
participantCount.FadeIn(transition_duration);
|
||||||
infoPanelFlow.FadeIn(transition_duration);
|
beatmapTypeInfo.FadeIn(transition_duration);
|
||||||
name.FadeIn(transition_duration);
|
name.FadeIn(transition_duration);
|
||||||
participantInfo.FadeIn(transition_duration);
|
participantInfo.FadeIn(transition_duration);
|
||||||
|
|
||||||
|
@ -92,6 +92,6 @@ namespace osu.Game.Screens.Play
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private string formatTime(TimeSpan timeSpan) => $"{(timeSpan < TimeSpan.Zero ? "-" : "")}{timeSpan.Duration().TotalMinutes:N0}:{timeSpan.Duration().Seconds:D2}";
|
private string formatTime(TimeSpan timeSpan) => $"{(timeSpan < TimeSpan.Zero ? "-" : "")}{Math.Floor(timeSpan.Duration().TotalMinutes)}:{timeSpan.Duration().Seconds:D2}";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user