mirror of
https://github.com/ppy/osu.git
synced 2025-01-28 18:12:56 +08:00
Add cover and count handling from newer response version
This commit is contained in:
parent
39d64e779c
commit
b43008b9f6
@ -37,6 +37,14 @@ namespace osu.Game.Online.Rooms
|
|||||||
[JsonProperty("channel_id")]
|
[JsonProperty("channel_id")]
|
||||||
public readonly Bindable<int> ChannelId = new Bindable<int>();
|
public readonly Bindable<int> ChannelId = new Bindable<int>();
|
||||||
|
|
||||||
|
[JsonProperty("current_playlist_item")]
|
||||||
|
[Cached]
|
||||||
|
public readonly Bindable<PlaylistItem> CurrentPlaylistItem = new Bindable<PlaylistItem>();
|
||||||
|
|
||||||
|
[JsonProperty("playlist_item_stats")]
|
||||||
|
[Cached]
|
||||||
|
public readonly Bindable<RoomPlaylistItemStats> PlaylistItemStats = new Bindable<RoomPlaylistItemStats>();
|
||||||
|
|
||||||
[JsonProperty("difficulty_range")]
|
[JsonProperty("difficulty_range")]
|
||||||
public readonly Bindable<RoomDifficultyRange> DifficultyRange = new Bindable<RoomDifficultyRange>();
|
public readonly Bindable<RoomDifficultyRange> DifficultyRange = new Bindable<RoomDifficultyRange>();
|
||||||
|
|
||||||
@ -232,6 +240,19 @@ namespace osu.Game.Online.Rooms
|
|||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
[JsonObject(MemberSerialization.OptIn)]
|
||||||
|
public class RoomPlaylistItemStats
|
||||||
|
{
|
||||||
|
[JsonProperty("count_active")]
|
||||||
|
public int CountActive;
|
||||||
|
|
||||||
|
[JsonProperty("count_total")]
|
||||||
|
public int CountTotal;
|
||||||
|
|
||||||
|
[JsonProperty("ruleset_ids")]
|
||||||
|
public int[] RulesetIDs;
|
||||||
|
}
|
||||||
|
|
||||||
[JsonObject(MemberSerialization.OptIn)]
|
[JsonObject(MemberSerialization.OptIn)]
|
||||||
public class RoomDifficultyRange
|
public class RoomDifficultyRange
|
||||||
{
|
{
|
||||||
|
@ -23,6 +23,7 @@ namespace osu.Game.Screens.OnlinePlay.Components
|
|||||||
{
|
{
|
||||||
InternalChild = sprite = CreateBackgroundSprite();
|
InternalChild = sprite = CreateBackgroundSprite();
|
||||||
|
|
||||||
|
CurrentPlaylistItem.BindValueChanged(_ => updateBeatmap());
|
||||||
Playlist.CollectionChanged += (_, __) => updateBeatmap();
|
Playlist.CollectionChanged += (_, __) => updateBeatmap();
|
||||||
|
|
||||||
updateBeatmap();
|
updateBeatmap();
|
||||||
@ -30,7 +31,7 @@ namespace osu.Game.Screens.OnlinePlay.Components
|
|||||||
|
|
||||||
private void updateBeatmap()
|
private void updateBeatmap()
|
||||||
{
|
{
|
||||||
sprite.Beatmap.Value = Playlist.GetCurrentItem()?.Beatmap;
|
sprite.Beatmap.Value = CurrentPlaylistItem.Value?.Beatmap ?? Playlist.GetCurrentItem()?.Beatmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual UpdateableBeatmapBackgroundSprite CreateBackgroundSprite() => new UpdateableBeatmapBackgroundSprite(BeatmapSetCoverType) { RelativeSizeAxes = Axes.Both };
|
protected virtual UpdateableBeatmapBackgroundSprite CreateBackgroundSprite() => new UpdateableBeatmapBackgroundSprite(BeatmapSetCoverType) { RelativeSizeAxes = Axes.Both };
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// 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.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System.Collections.Specialized;
|
|
||||||
using Humanizer;
|
using Humanizer;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Extensions.LocalisationExtensions;
|
using osu.Framework.Extensions.LocalisationExtensions;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Game.Online.Rooms;
|
||||||
|
|
||||||
namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
||||||
{
|
{
|
||||||
@ -41,15 +42,17 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
|
|
||||||
Playlist.BindCollectionChanged(updateCount, true);
|
PlaylistItemStats.BindValueChanged(updateCount, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateCount(object sender, NotifyCollectionChangedEventArgs e)
|
private void updateCount(ValueChangedEvent<Room.RoomPlaylistItemStats> valueChangedEvent)
|
||||||
{
|
{
|
||||||
|
int activeItems = valueChangedEvent.NewValue.CountActive;
|
||||||
|
|
||||||
count.Clear();
|
count.Clear();
|
||||||
count.AddText(Playlist.Count.ToLocalisableString(), s => s.Font = s.Font.With(weight: FontWeight.Bold));
|
count.AddText(activeItems.ToLocalisableString(), s => s.Font = s.Font.With(weight: FontWeight.Bold));
|
||||||
count.AddText(" ");
|
count.AddText(" ");
|
||||||
count.AddText("Beatmap".ToQuantity(Playlist.Count, ShowQuantityAs.None));
|
count.AddText("Beatmap".ToQuantity(activeItems, ShowQuantityAs.None));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,12 @@ namespace osu.Game.Screens.OnlinePlay
|
|||||||
[Resolved(typeof(Room))]
|
[Resolved(typeof(Room))]
|
||||||
protected Bindable<MatchType> Type { get; private set; }
|
protected Bindable<MatchType> Type { get; private set; }
|
||||||
|
|
||||||
|
[Resolved(typeof(Room))]
|
||||||
|
protected Bindable<PlaylistItem> CurrentPlaylistItem { get; private set; }
|
||||||
|
|
||||||
|
[Resolved(typeof(Room))]
|
||||||
|
protected Bindable<Room.RoomPlaylistItemStats> PlaylistItemStats { get; private set; }
|
||||||
|
|
||||||
[Resolved(typeof(Room))]
|
[Resolved(typeof(Room))]
|
||||||
protected BindableList<PlaylistItem> Playlist { get; private set; }
|
protected BindableList<PlaylistItem> Playlist { get; private set; }
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user