mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 08:13:31 +08:00
Merge pull request #15222 from peppy/online-info-as-interface
Move online beatmap set info to interface
This commit is contained in:
commit
12620fcf78
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
using NUnit.Framework;
|
using NUnit.Framework;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays.BeatmapSet;
|
using osu.Game.Overlays.BeatmapSet;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
@ -22,7 +23,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
AddStep("set undownloadable beatmapset with link", () => container.BeatmapSet = new BeatmapSetInfo
|
AddStep("set undownloadable beatmapset with link", () => container.BeatmapSet = new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Availability = new BeatmapSetOnlineAvailability
|
Availability = new BeatmapSetOnlineAvailability
|
||||||
{
|
{
|
||||||
@ -40,7 +41,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
AddStep("set undownloadable beatmapset without link", () => container.BeatmapSet = new BeatmapSetInfo
|
AddStep("set undownloadable beatmapset without link", () => container.BeatmapSet = new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Availability = new BeatmapSetOnlineAvailability
|
Availability = new BeatmapSetOnlineAvailability
|
||||||
{
|
{
|
||||||
@ -57,7 +58,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
AddStep("set parts-removed beatmapset with link", () => container.BeatmapSet = new BeatmapSetInfo
|
AddStep("set parts-removed beatmapset with link", () => container.BeatmapSet = new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Availability = new BeatmapSetOnlineAvailability
|
Availability = new BeatmapSetOnlineAvailability
|
||||||
{
|
{
|
||||||
@ -75,7 +76,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
AddStep("set normal beatmapset", () => container.BeatmapSet = new BeatmapSetInfo
|
AddStep("set normal beatmapset", () => container.BeatmapSet = new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Availability = new BeatmapSetOnlineAvailability
|
Availability = new BeatmapSetOnlineAvailability
|
||||||
{
|
{
|
||||||
|
@ -11,6 +11,7 @@ using osu.Game.Users;
|
|||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.Online
|
namespace osu.Game.Tests.Visual.Online
|
||||||
{
|
{
|
||||||
@ -63,7 +64,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Id = 3,
|
Id = 3,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Preview = @"https://b.ppy.sh/preview/12345.mp3",
|
Preview = @"https://b.ppy.sh/preview/12345.mp3",
|
||||||
PlayCount = 123,
|
PlayCount = 123,
|
||||||
@ -134,7 +135,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Id = 3,
|
Id = 3,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Availability = new BeatmapSetOnlineAvailability
|
Availability = new BeatmapSetOnlineAvailability
|
||||||
{
|
{
|
||||||
@ -224,7 +225,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Id = 3,
|
Id = 3,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers(),
|
Covers = new BeatmapSetOnlineCovers(),
|
||||||
},
|
},
|
||||||
@ -309,7 +310,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Id = 3,
|
Id = 3,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Preview = @"https://b.ppy.sh/preview/123.mp3",
|
Preview = @"https://b.ppy.sh/preview/123.mp3",
|
||||||
HasVideo = true,
|
HasVideo = true,
|
||||||
|
@ -8,6 +8,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Utils;
|
using osu.Framework.Utils;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.BeatmapSet;
|
using osu.Game.Overlays.BeatmapSet;
|
||||||
using osu.Game.Screens.Select.Details;
|
using osu.Game.Screens.Select.Details;
|
||||||
@ -57,7 +58,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
},
|
},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Status = BeatmapSetOnlineStatus.Ranked
|
Status = BeatmapSetOnlineStatus.Ranked
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Allocation;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Online;
|
using osu.Game.Online;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays.BeatmapListing.Panels;
|
using osu.Game.Overlays.BeatmapListing.Panels;
|
||||||
using osu.Game.Rulesets.Osu;
|
using osu.Game.Rulesets.Osu;
|
||||||
using osu.Game.Tests.Resources;
|
using osu.Game.Tests.Resources;
|
||||||
@ -74,7 +75,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
{
|
{
|
||||||
ID = 1,
|
ID = 1,
|
||||||
OnlineBeatmapSetID = 241526,
|
OnlineBeatmapSetID = 241526,
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Availability = new BeatmapSetOnlineAvailability
|
Availability = new BeatmapSetOnlineAvailability
|
||||||
{
|
{
|
||||||
|
@ -7,6 +7,7 @@ using osu.Framework.Graphics;
|
|||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Game.Audio;
|
using osu.Game.Audio;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays.BeatmapListing.Panels;
|
using osu.Game.Overlays.BeatmapListing.Panels;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
@ -31,7 +32,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Id = 3,
|
Id = 3,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Availability = new BeatmapSetOnlineAvailability
|
Availability = new BeatmapSetOnlineAvailability
|
||||||
{
|
{
|
||||||
@ -86,7 +87,7 @@ namespace osu.Game.Tests.Visual.Online
|
|||||||
Id = 3,
|
Id = 3,
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
HasVideo = true,
|
HasVideo = true,
|
||||||
HasStoryboard = true,
|
HasStoryboard = true,
|
||||||
|
@ -10,6 +10,7 @@ using osu.Framework.Graphics.Containers;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Configuration;
|
using osu.Game.Configuration;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Overlays;
|
using osu.Game.Overlays;
|
||||||
using osu.Game.Overlays.BeatmapListing;
|
using osu.Game.Overlays.BeatmapListing;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
@ -111,7 +112,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
private static readonly BeatmapSetInfo beatmap_set = new BeatmapSetInfo
|
private static readonly BeatmapSetInfo beatmap_set = new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers
|
Covers = new BeatmapSetOnlineCovers
|
||||||
{
|
{
|
||||||
@ -122,7 +123,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
|
|
||||||
private static readonly BeatmapSetInfo no_cover_beatmap_set = new BeatmapSetInfo
|
private static readonly BeatmapSetInfo no_cover_beatmap_set = new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers
|
Covers = new BeatmapSetOnlineCovers
|
||||||
{
|
{
|
||||||
|
@ -11,6 +11,7 @@ using osu.Game.Users;
|
|||||||
using System;
|
using System;
|
||||||
using osu.Framework.Graphics.Shapes;
|
using osu.Framework.Graphics.Shapes;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.UserInterface
|
namespace osu.Game.Tests.Visual.UserInterface
|
||||||
{
|
{
|
||||||
@ -69,7 +70,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
Id = 100
|
Id = 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers
|
Covers = new BeatmapSetOnlineCovers
|
||||||
{
|
{
|
||||||
@ -90,7 +91,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
Id = 100
|
Id = 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers
|
Covers = new BeatmapSetOnlineCovers
|
||||||
{
|
{
|
||||||
@ -115,7 +116,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
Id = 100
|
Id = 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers
|
Covers = new BeatmapSetOnlineCovers
|
||||||
{
|
{
|
||||||
@ -136,7 +137,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
Id = 100
|
Id = 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers
|
Covers = new BeatmapSetOnlineCovers
|
||||||
{
|
{
|
||||||
|
@ -13,6 +13,7 @@ using osu.Framework.Testing;
|
|||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Beatmaps.Drawables;
|
using osu.Game.Beatmaps.Drawables;
|
||||||
using osu.Game.Graphics.Containers;
|
using osu.Game.Graphics.Containers;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osuTK;
|
using osuTK;
|
||||||
|
|
||||||
namespace osu.Game.Tests.Visual.UserInterface
|
namespace osu.Game.Tests.Visual.UserInterface
|
||||||
@ -22,21 +23,21 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestLocal([Values] BeatmapSetCoverType coverType)
|
public void TestLocal([Values] BeatmapSetCoverType coverType)
|
||||||
{
|
{
|
||||||
AddStep("setup cover", () => Child = new UpdateableBeatmapSetCover(coverType)
|
AddStep("setup cover", () => Child = new UpdateableOnlineBeatmapSetCover(coverType)
|
||||||
{
|
{
|
||||||
BeatmapSet = CreateBeatmap(Ruleset.Value).BeatmapInfo.BeatmapSet,
|
BeatmapSet = CreateBeatmap(Ruleset.Value).BeatmapInfo.BeatmapSet,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Masking = true,
|
Masking = true,
|
||||||
});
|
});
|
||||||
|
|
||||||
AddUntilStep("wait for load", () => this.ChildrenOfType<BeatmapSetCover>().SingleOrDefault()?.IsLoaded ?? false);
|
AddUntilStep("wait for load", () => this.ChildrenOfType<OnlineBeatmapSetCover>().SingleOrDefault()?.IsLoaded ?? false);
|
||||||
}
|
}
|
||||||
|
|
||||||
[Test]
|
[Test]
|
||||||
public void TestUnloadAndReload()
|
public void TestUnloadAndReload()
|
||||||
{
|
{
|
||||||
OsuScrollContainer scroll = null;
|
OsuScrollContainer scroll = null;
|
||||||
List<UpdateableBeatmapSetCover> covers = new List<UpdateableBeatmapSetCover>();
|
List<UpdateableOnlineBeatmapSetCover> covers = new List<UpdateableOnlineBeatmapSetCover>();
|
||||||
|
|
||||||
AddStep("setup covers", () =>
|
AddStep("setup covers", () =>
|
||||||
{
|
{
|
||||||
@ -65,7 +66,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
{
|
{
|
||||||
var coverType = coverTypes[i % coverTypes.Count];
|
var coverType = coverTypes[i % coverTypes.Count];
|
||||||
|
|
||||||
var cover = new UpdateableBeatmapSetCover(coverType)
|
var cover = new UpdateableOnlineBeatmapSetCover(coverType)
|
||||||
{
|
{
|
||||||
BeatmapSet = setInfo,
|
BeatmapSet = setInfo,
|
||||||
Height = 100,
|
Height = 100,
|
||||||
@ -84,7 +85,7 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
var loadedCovers = covers.Where(c => c.ChildrenOfType<BeatmapSetCover>().SingleOrDefault()?.IsLoaded ?? false);
|
var loadedCovers = covers.Where(c => c.ChildrenOfType<OnlineBeatmapSetCover>().SingleOrDefault()?.IsLoaded ?? false);
|
||||||
|
|
||||||
AddUntilStep("some loaded", () => loadedCovers.Any());
|
AddUntilStep("some loaded", () => loadedCovers.Any());
|
||||||
AddStep("scroll to end", () => scroll.ScrollToEnd());
|
AddStep("scroll to end", () => scroll.ScrollToEnd());
|
||||||
@ -94,9 +95,9 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestSetNullBeatmapWhileLoading()
|
public void TestSetNullBeatmapWhileLoading()
|
||||||
{
|
{
|
||||||
TestUpdateableBeatmapSetCover updateableCover = null;
|
TestUpdateableOnlineBeatmapSetCover updateableCover = null;
|
||||||
|
|
||||||
AddStep("setup cover", () => Child = updateableCover = new TestUpdateableBeatmapSetCover
|
AddStep("setup cover", () => Child = updateableCover = new TestUpdateableOnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
BeatmapSet = CreateBeatmap(Ruleset.Value).BeatmapInfo.BeatmapSet,
|
BeatmapSet = CreateBeatmap(Ruleset.Value).BeatmapInfo.BeatmapSet,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
@ -111,10 +112,10 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
[Test]
|
[Test]
|
||||||
public void TestCoverChangeOnNewBeatmap()
|
public void TestCoverChangeOnNewBeatmap()
|
||||||
{
|
{
|
||||||
TestUpdateableBeatmapSetCover updateableCover = null;
|
TestUpdateableOnlineBeatmapSetCover updateableCover = null;
|
||||||
BeatmapSetCover initialCover = null;
|
OnlineBeatmapSetCover initialCover = null;
|
||||||
|
|
||||||
AddStep("setup cover", () => Child = updateableCover = new TestUpdateableBeatmapSetCover(0)
|
AddStep("setup cover", () => Child = updateableCover = new TestUpdateableOnlineBeatmapSetCover(0)
|
||||||
{
|
{
|
||||||
BeatmapSet = createBeatmapWithCover("https://assets.ppy.sh/beatmaps/1189904/covers/cover.jpg"),
|
BeatmapSet = createBeatmapWithCover("https://assets.ppy.sh/beatmaps/1189904/covers/cover.jpg"),
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
@ -122,38 +123,38 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
Alpha = 0.4f
|
Alpha = 0.4f
|
||||||
});
|
});
|
||||||
|
|
||||||
AddUntilStep("cover loaded", () => updateableCover.ChildrenOfType<BeatmapSetCover>().Any());
|
AddUntilStep("cover loaded", () => updateableCover.ChildrenOfType<OnlineBeatmapSetCover>().Any());
|
||||||
AddStep("store initial cover", () => initialCover = updateableCover.ChildrenOfType<BeatmapSetCover>().Single());
|
AddStep("store initial cover", () => initialCover = updateableCover.ChildrenOfType<OnlineBeatmapSetCover>().Single());
|
||||||
AddUntilStep("wait for fade complete", () => initialCover.Alpha == 1);
|
AddUntilStep("wait for fade complete", () => initialCover.Alpha == 1);
|
||||||
|
|
||||||
AddStep("switch beatmap",
|
AddStep("switch beatmap",
|
||||||
() => updateableCover.BeatmapSet = createBeatmapWithCover("https://assets.ppy.sh/beatmaps/1079428/covers/cover.jpg"));
|
() => updateableCover.BeatmapSet = createBeatmapWithCover("https://assets.ppy.sh/beatmaps/1079428/covers/cover.jpg"));
|
||||||
AddUntilStep("new cover loaded", () => updateableCover.ChildrenOfType<BeatmapSetCover>().Except(new[] { initialCover }).Any());
|
AddUntilStep("new cover loaded", () => updateableCover.ChildrenOfType<OnlineBeatmapSetCover>().Except(new[] { initialCover }).Any());
|
||||||
}
|
}
|
||||||
|
|
||||||
private static BeatmapSetInfo createBeatmapWithCover(string coverUrl) => new BeatmapSetInfo
|
private static BeatmapSetInfo createBeatmapWithCover(string coverUrl) => new BeatmapSetInfo
|
||||||
{
|
{
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Covers = new BeatmapSetOnlineCovers { Cover = coverUrl }
|
Covers = new BeatmapSetOnlineCovers { Cover = coverUrl }
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
private class TestUpdateableBeatmapSetCover : UpdateableBeatmapSetCover
|
private class TestUpdateableOnlineBeatmapSetCover : UpdateableOnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
private readonly int loadDelay;
|
private readonly int loadDelay;
|
||||||
|
|
||||||
public TestUpdateableBeatmapSetCover(int loadDelay = 10000)
|
public TestUpdateableOnlineBeatmapSetCover(int loadDelay = 10000)
|
||||||
{
|
{
|
||||||
this.loadDelay = loadDelay;
|
this.loadDelay = loadDelay;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Drawable CreateDrawable(BeatmapSetInfo model)
|
protected override Drawable CreateDrawable(IBeatmapSetOnlineInfo model)
|
||||||
{
|
{
|
||||||
if (model == null)
|
if (model == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return new TestBeatmapSetCover(model, loadDelay)
|
return new TestOnlineBeatmapSetCover(model, loadDelay)
|
||||||
{
|
{
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
Origin = Anchor.Centre,
|
Origin = Anchor.Centre,
|
||||||
@ -163,11 +164,11 @@ namespace osu.Game.Tests.Visual.UserInterface
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TestBeatmapSetCover : BeatmapSetCover
|
private class TestOnlineBeatmapSetCover : OnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
private readonly int loadDelay;
|
private readonly int loadDelay;
|
||||||
|
|
||||||
public TestBeatmapSetCover(BeatmapSetInfo set, int loadDelay)
|
public TestOnlineBeatmapSetCover(IBeatmapSetOnlineInfo set, int loadDelay)
|
||||||
: base(set)
|
: base(set)
|
||||||
{
|
{
|
||||||
this.loadDelay = loadDelay;
|
this.loadDelay = loadDelay;
|
||||||
|
@ -10,7 +10,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.Graphics.Textures;
|
using osu.Framework.Graphics.Textures;
|
||||||
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;
|
||||||
@ -21,7 +20,8 @@ namespace osu.Game.Tournament.Components
|
|||||||
{
|
{
|
||||||
public class TournamentBeatmapPanel : CompositeDrawable
|
public class TournamentBeatmapPanel : CompositeDrawable
|
||||||
{
|
{
|
||||||
public readonly BeatmapInfo BeatmapInfo;
|
public readonly IBeatmapInfo BeatmapInfo;
|
||||||
|
|
||||||
private readonly string mod;
|
private readonly string mod;
|
||||||
|
|
||||||
private const float horizontal_padding = 10;
|
private const float horizontal_padding = 10;
|
||||||
@ -32,12 +32,13 @@ namespace osu.Game.Tournament.Components
|
|||||||
private readonly Bindable<TournamentMatch> currentMatch = new Bindable<TournamentMatch>();
|
private readonly Bindable<TournamentMatch> currentMatch = new Bindable<TournamentMatch>();
|
||||||
private Box flash;
|
private Box flash;
|
||||||
|
|
||||||
public TournamentBeatmapPanel(BeatmapInfo beatmapInfo, string mod = null)
|
public TournamentBeatmapPanel(IBeatmapInfo beatmapInfo, string mod = null)
|
||||||
{
|
{
|
||||||
if (beatmapInfo == null) throw new ArgumentNullException(nameof(beatmapInfo));
|
if (beatmapInfo == null) throw new ArgumentNullException(nameof(beatmapInfo));
|
||||||
|
|
||||||
BeatmapInfo = beatmapInfo;
|
BeatmapInfo = beatmapInfo;
|
||||||
this.mod = mod;
|
this.mod = mod;
|
||||||
|
|
||||||
Width = 400;
|
Width = 400;
|
||||||
Height = HEIGHT;
|
Height = HEIGHT;
|
||||||
}
|
}
|
||||||
@ -57,11 +58,11 @@ namespace osu.Game.Tournament.Components
|
|||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Colour = Color4.Black,
|
Colour = Color4.Black,
|
||||||
},
|
},
|
||||||
new UpdateableBeatmapSetCover
|
new UpdateableOnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Colour = OsuColour.Gray(0.5f),
|
Colour = OsuColour.Gray(0.5f),
|
||||||
BeatmapSet = BeatmapInfo.BeatmapSet,
|
BeatmapSet = BeatmapInfo.BeatmapSet as IBeatmapSetOnlineInfo,
|
||||||
},
|
},
|
||||||
new FillFlowContainer
|
new FillFlowContainer
|
||||||
{
|
{
|
||||||
@ -74,9 +75,7 @@ namespace osu.Game.Tournament.Components
|
|||||||
{
|
{
|
||||||
new TournamentSpriteText
|
new TournamentSpriteText
|
||||||
{
|
{
|
||||||
Text = new RomanisableString(
|
Text = BeatmapInfo.GetDisplayTitleRomanisable(false),
|
||||||
$"{BeatmapInfo.Metadata.ArtistUnicode ?? BeatmapInfo.Metadata.Artist} - {BeatmapInfo.Metadata.TitleUnicode ?? BeatmapInfo.Metadata.Title}",
|
|
||||||
$"{BeatmapInfo.Metadata.Artist} - {BeatmapInfo.Metadata.Title}"),
|
|
||||||
Font = OsuFont.Torus.With(weight: FontWeight.Bold),
|
Font = OsuFont.Torus.With(weight: FontWeight.Bold),
|
||||||
},
|
},
|
||||||
new FillFlowContainer
|
new FillFlowContainer
|
||||||
@ -93,7 +92,7 @@ namespace osu.Game.Tournament.Components
|
|||||||
},
|
},
|
||||||
new TournamentSpriteText
|
new TournamentSpriteText
|
||||||
{
|
{
|
||||||
Text = BeatmapInfo.Metadata.AuthorString,
|
Text = BeatmapInfo.Metadata?.Author,
|
||||||
Padding = new MarginPadding { Right = 20 },
|
Padding = new MarginPadding { Right = 20 },
|
||||||
Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 14)
|
Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 14)
|
||||||
},
|
},
|
||||||
@ -105,7 +104,7 @@ namespace osu.Game.Tournament.Components
|
|||||||
},
|
},
|
||||||
new TournamentSpriteText
|
new TournamentSpriteText
|
||||||
{
|
{
|
||||||
Text = BeatmapInfo.Version,
|
Text = BeatmapInfo.DifficultyName,
|
||||||
Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 14)
|
Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 14)
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
@ -149,7 +148,7 @@ namespace osu.Game.Tournament.Components
|
|||||||
|
|
||||||
private void updateState()
|
private void updateState()
|
||||||
{
|
{
|
||||||
var found = currentMatch.Value.PicksBans.FirstOrDefault(p => p.BeatmapID == BeatmapInfo.OnlineBeatmapID);
|
var found = currentMatch.Value.PicksBans.FirstOrDefault(p => p.BeatmapID == BeatmapInfo.OnlineID);
|
||||||
|
|
||||||
bool doFlash = found != choice;
|
bool doFlash = found != choice;
|
||||||
choice = found;
|
choice = found;
|
||||||
|
@ -147,11 +147,11 @@ namespace osu.Game.Tournament.Screens.MapPool
|
|||||||
|
|
||||||
if (map != null)
|
if (map != null)
|
||||||
{
|
{
|
||||||
if (e.Button == MouseButton.Left && map.BeatmapInfo.OnlineBeatmapID != null)
|
if (e.Button == MouseButton.Left && map.BeatmapInfo.OnlineID > 0)
|
||||||
addForBeatmap(map.BeatmapInfo.OnlineBeatmapID.Value);
|
addForBeatmap(map.BeatmapInfo.OnlineID);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var existing = CurrentMatch.Value.PicksBans.FirstOrDefault(p => p.BeatmapID == map.BeatmapInfo.OnlineBeatmapID);
|
var existing = CurrentMatch.Value.PicksBans.FirstOrDefault(p => p.BeatmapID == map.BeatmapInfo.OnlineID);
|
||||||
|
|
||||||
if (existing != null)
|
if (existing != null)
|
||||||
{
|
{
|
||||||
|
@ -16,12 +16,17 @@ namespace osu.Game.Beatmaps
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// A user-presentable display title representing this beatmap, with localisation handling for potentially romanisable fields.
|
/// A user-presentable display title representing this beatmap, with localisation handling for potentially romanisable fields.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static RomanisableString GetDisplayTitleRomanisable(this IBeatmapInfo beatmapInfo)
|
public static RomanisableString GetDisplayTitleRomanisable(this IBeatmapInfo beatmapInfo, bool includeDifficultyName = true)
|
||||||
{
|
{
|
||||||
var metadata = getClosestMetadata(beatmapInfo).GetDisplayTitleRomanisable();
|
var metadata = getClosestMetadata(beatmapInfo).GetDisplayTitleRomanisable();
|
||||||
var versionString = getVersionString(beatmapInfo);
|
|
||||||
|
|
||||||
return new RomanisableString($"{metadata.GetPreferred(true)} {versionString}".Trim(), $"{metadata.GetPreferred(false)} {versionString}".Trim());
|
if (includeDifficultyName)
|
||||||
|
{
|
||||||
|
var versionString = getVersionString(beatmapInfo);
|
||||||
|
return new RomanisableString($"{metadata.GetPreferred(true)} {versionString}".Trim(), $"{metadata.GetPreferred(false)} {versionString}".Trim());
|
||||||
|
}
|
||||||
|
|
||||||
|
return new RomanisableString($"{metadata.GetPreferred(true)}".Trim(), $"{metadata.GetPreferred(false)}".Trim());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string[] GetSearchableTerms(this IBeatmapInfo beatmapInfo) => new[]
|
public static string[] GetSearchableTerms(this IBeatmapInfo beatmapInfo) => new[]
|
||||||
|
@ -6,13 +6,15 @@ using System.Collections.Generic;
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using osu.Framework.Testing;
|
using osu.Framework.Testing;
|
||||||
using osu.Game.Database;
|
using osu.Game.Database;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
|
|
||||||
namespace osu.Game.Beatmaps
|
namespace osu.Game.Beatmaps
|
||||||
{
|
{
|
||||||
[ExcludeFromDynamicCompile]
|
[ExcludeFromDynamicCompile]
|
||||||
public class BeatmapSetInfo : IHasPrimaryKey, IHasFiles<BeatmapSetFileInfo>, ISoftDelete, IEquatable<BeatmapSetInfo>, IBeatmapSetInfo
|
public class BeatmapSetInfo : IHasPrimaryKey, IHasFiles<BeatmapSetFileInfo>, ISoftDelete, IEquatable<BeatmapSetInfo>, IBeatmapSetInfo, IBeatmapSetOnlineInfo
|
||||||
{
|
{
|
||||||
public int ID { get; set; }
|
public int ID { get; set; }
|
||||||
|
|
||||||
@ -26,8 +28,6 @@ namespace osu.Game.Beatmaps
|
|||||||
|
|
||||||
public DateTimeOffset DateAdded { get; set; }
|
public DateTimeOffset DateAdded { get; set; }
|
||||||
|
|
||||||
public BeatmapSetOnlineStatus Status { get; set; } = BeatmapSetOnlineStatus.None;
|
|
||||||
|
|
||||||
public BeatmapMetadata Metadata { get; set; }
|
public BeatmapMetadata Metadata { get; set; }
|
||||||
|
|
||||||
public List<BeatmapInfo> Beatmaps { get; set; }
|
public List<BeatmapInfo> Beatmaps { get; set; }
|
||||||
@ -36,7 +36,7 @@ namespace osu.Game.Beatmaps
|
|||||||
public List<BeatmapSetFileInfo> Files { get; set; } = new List<BeatmapSetFileInfo>();
|
public List<BeatmapSetFileInfo> Files { get; set; } = new List<BeatmapSetFileInfo>();
|
||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public BeatmapSetOnlineInfo OnlineInfo { get; set; }
|
public APIBeatmapSet OnlineInfo { get; set; }
|
||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public BeatmapSetMetrics Metrics { get; set; }
|
public BeatmapSetMetrics Metrics { get; set; }
|
||||||
@ -102,5 +102,141 @@ namespace osu.Game.Beatmaps
|
|||||||
IEnumerable<INamedFileUsage> IBeatmapSetInfo.Files => Files;
|
IEnumerable<INamedFileUsage> IBeatmapSetInfo.Files => Files;
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
#region Delegation for IBeatmapSetOnlineInfo
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public DateTimeOffset Submitted
|
||||||
|
{
|
||||||
|
get => OnlineInfo.Submitted;
|
||||||
|
set => OnlineInfo.Submitted = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public DateTimeOffset? Ranked
|
||||||
|
{
|
||||||
|
get => OnlineInfo.Ranked;
|
||||||
|
set => OnlineInfo.Ranked = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public DateTimeOffset? LastUpdated
|
||||||
|
{
|
||||||
|
get => OnlineInfo.LastUpdated;
|
||||||
|
set => OnlineInfo.LastUpdated = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public BeatmapSetOnlineStatus Status { get; set; } = BeatmapSetOnlineStatus.None;
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public bool HasExplicitContent
|
||||||
|
{
|
||||||
|
get => OnlineInfo.HasExplicitContent;
|
||||||
|
set => OnlineInfo.HasExplicitContent = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public bool HasVideo
|
||||||
|
{
|
||||||
|
get => OnlineInfo.HasVideo;
|
||||||
|
set => OnlineInfo.HasVideo = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public bool HasStoryboard
|
||||||
|
{
|
||||||
|
get => OnlineInfo.HasStoryboard;
|
||||||
|
set => OnlineInfo.HasStoryboard = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public BeatmapSetOnlineCovers Covers
|
||||||
|
{
|
||||||
|
get => OnlineInfo.Covers;
|
||||||
|
set => OnlineInfo.Covers = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public string Preview
|
||||||
|
{
|
||||||
|
get => OnlineInfo.Preview;
|
||||||
|
set => OnlineInfo.Preview = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public double BPM
|
||||||
|
{
|
||||||
|
get => OnlineInfo.BPM;
|
||||||
|
set => OnlineInfo.BPM = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public int PlayCount
|
||||||
|
{
|
||||||
|
get => OnlineInfo.PlayCount;
|
||||||
|
set => OnlineInfo.PlayCount = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public int FavouriteCount
|
||||||
|
{
|
||||||
|
get => OnlineInfo.FavouriteCount;
|
||||||
|
set => OnlineInfo.FavouriteCount = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public bool HasFavourited
|
||||||
|
{
|
||||||
|
get => OnlineInfo.HasFavourited;
|
||||||
|
set => OnlineInfo.HasFavourited = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public BeatmapSetOnlineAvailability Availability
|
||||||
|
{
|
||||||
|
get => OnlineInfo.Availability;
|
||||||
|
set => OnlineInfo.Availability = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public BeatmapSetOnlineGenre Genre
|
||||||
|
{
|
||||||
|
get => OnlineInfo.Genre;
|
||||||
|
set => OnlineInfo.Genre = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public BeatmapSetOnlineLanguage Language
|
||||||
|
{
|
||||||
|
get => OnlineInfo.Language;
|
||||||
|
set => OnlineInfo.Language = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
[JsonIgnore]
|
||||||
|
public int? TrackId
|
||||||
|
{
|
||||||
|
get => OnlineInfo.TrackId;
|
||||||
|
set => OnlineInfo.TrackId = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
16
osu.Game/Beatmaps/BeatmapSetOnlineAvailability.cs
Normal file
16
osu.Game/Beatmaps/BeatmapSetOnlineAvailability.cs
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
// 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 Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps
|
||||||
|
{
|
||||||
|
public class BeatmapSetOnlineAvailability
|
||||||
|
{
|
||||||
|
[JsonProperty(@"download_disabled")]
|
||||||
|
public bool DownloadDisabled { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(@"more_information")]
|
||||||
|
public string ExternalLink { get; set; }
|
||||||
|
}
|
||||||
|
}
|
25
osu.Game/Beatmaps/BeatmapSetOnlineCovers.cs
Normal file
25
osu.Game/Beatmaps/BeatmapSetOnlineCovers.cs
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
// 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 Newtonsoft.Json;
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps
|
||||||
|
{
|
||||||
|
public class BeatmapSetOnlineCovers
|
||||||
|
{
|
||||||
|
public string CoverLowRes { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(@"cover@2x")]
|
||||||
|
public string Cover { get; set; }
|
||||||
|
|
||||||
|
public string CardLowRes { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(@"card@2x")]
|
||||||
|
public string Card { get; set; }
|
||||||
|
|
||||||
|
public string ListLowRes { get; set; }
|
||||||
|
|
||||||
|
[JsonProperty(@"list@2x")]
|
||||||
|
public string List { get; set; }
|
||||||
|
}
|
||||||
|
}
|
11
osu.Game/Beatmaps/BeatmapSetOnlineGenre.cs
Normal file
11
osu.Game/Beatmaps/BeatmapSetOnlineGenre.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps
|
||||||
|
{
|
||||||
|
public class BeatmapSetOnlineGenre
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
11
osu.Game/Beatmaps/BeatmapSetOnlineLanguage.cs
Normal file
11
osu.Game/Beatmaps/BeatmapSetOnlineLanguage.cs
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
// 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.
|
||||||
|
|
||||||
|
namespace osu.Game.Beatmaps
|
||||||
|
{
|
||||||
|
public class BeatmapSetOnlineLanguage
|
||||||
|
{
|
||||||
|
public int Id { get; set; }
|
||||||
|
public string Name { get; set; }
|
||||||
|
}
|
||||||
|
}
|
@ -9,12 +9,12 @@ using osu.Framework.Graphics.Textures;
|
|||||||
namespace osu.Game.Beatmaps.Drawables
|
namespace osu.Game.Beatmaps.Drawables
|
||||||
{
|
{
|
||||||
[LongRunningLoad]
|
[LongRunningLoad]
|
||||||
public class BeatmapSetCover : Sprite
|
public class OnlineBeatmapSetCover : Sprite
|
||||||
{
|
{
|
||||||
private readonly BeatmapSetInfo set;
|
private readonly IBeatmapSetOnlineInfo set;
|
||||||
private readonly BeatmapSetCoverType type;
|
private readonly BeatmapSetCoverType type;
|
||||||
|
|
||||||
public BeatmapSetCover(BeatmapSetInfo set, BeatmapSetCoverType type = BeatmapSetCoverType.Cover)
|
public OnlineBeatmapSetCover(IBeatmapSetOnlineInfo set, BeatmapSetCoverType type = BeatmapSetCoverType.Cover)
|
||||||
{
|
{
|
||||||
if (set == null)
|
if (set == null)
|
||||||
throw new ArgumentNullException(nameof(set));
|
throw new ArgumentNullException(nameof(set));
|
||||||
@ -31,15 +31,15 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case BeatmapSetCoverType.Cover:
|
case BeatmapSetCoverType.Cover:
|
||||||
resource = set.OnlineInfo.Covers.Cover;
|
resource = set.Covers.Cover;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BeatmapSetCoverType.Card:
|
case BeatmapSetCoverType.Card:
|
||||||
resource = set.OnlineInfo.Covers.Card;
|
resource = set.Covers.Card;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case BeatmapSetCoverType.List:
|
case BeatmapSetCoverType.List:
|
||||||
resource = set.OnlineInfo.Covers.List;
|
resource = set.Covers.List;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
@ -54,7 +54,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
{
|
{
|
||||||
// prefer online cover where available.
|
// prefer online cover where available.
|
||||||
if (model?.BeatmapSet?.OnlineInfo != null)
|
if (model?.BeatmapSet?.OnlineInfo != null)
|
||||||
return new BeatmapSetCover(model.BeatmapSet, beatmapSetCoverType);
|
return new OnlineBeatmapSetCover(model.BeatmapSet, beatmapSetCoverType);
|
||||||
|
|
||||||
return model?.ID > 0
|
return model?.ID > 0
|
||||||
? new BeatmapBackgroundSprite(beatmaps.GetWorkingBeatmap(model))
|
? new BeatmapBackgroundSprite(beatmaps.GetWorkingBeatmap(model))
|
||||||
|
@ -9,11 +9,11 @@ using osu.Game.Graphics;
|
|||||||
|
|
||||||
namespace osu.Game.Beatmaps.Drawables
|
namespace osu.Game.Beatmaps.Drawables
|
||||||
{
|
{
|
||||||
public class UpdateableBeatmapSetCover : ModelBackedDrawable<BeatmapSetInfo>
|
public class UpdateableOnlineBeatmapSetCover : ModelBackedDrawable<IBeatmapSetOnlineInfo>
|
||||||
{
|
{
|
||||||
private readonly BeatmapSetCoverType coverType;
|
private readonly BeatmapSetCoverType coverType;
|
||||||
|
|
||||||
public BeatmapSetInfo BeatmapSet
|
public IBeatmapSetOnlineInfo BeatmapSet
|
||||||
{
|
{
|
||||||
get => Model;
|
get => Model;
|
||||||
set => Model = value;
|
set => Model = value;
|
||||||
@ -25,7 +25,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
set => base.Masking = value;
|
set => base.Masking = value;
|
||||||
}
|
}
|
||||||
|
|
||||||
public UpdateableBeatmapSetCover(BeatmapSetCoverType coverType = BeatmapSetCoverType.Cover)
|
public UpdateableOnlineBeatmapSetCover(BeatmapSetCoverType coverType = BeatmapSetCoverType.Cover)
|
||||||
{
|
{
|
||||||
this.coverType = coverType;
|
this.coverType = coverType;
|
||||||
|
|
||||||
@ -43,12 +43,12 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
protected override DelayedLoadWrapper CreateDelayedLoadWrapper(Func<Drawable> createContentFunc, double timeBeforeLoad)
|
protected override DelayedLoadWrapper CreateDelayedLoadWrapper(Func<Drawable> createContentFunc, double timeBeforeLoad)
|
||||||
=> new DelayedLoadUnloadWrapper(createContentFunc, timeBeforeLoad);
|
=> new DelayedLoadUnloadWrapper(createContentFunc, timeBeforeLoad);
|
||||||
|
|
||||||
protected override Drawable CreateDrawable(BeatmapSetInfo model)
|
protected override Drawable CreateDrawable(IBeatmapSetOnlineInfo model)
|
||||||
{
|
{
|
||||||
if (model == null)
|
if (model == null)
|
||||||
return null;
|
return null;
|
||||||
|
|
||||||
return new BeatmapSetCover(model, coverType)
|
return new OnlineBeatmapSetCover(model, coverType)
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
@ -1,139 +1,99 @@
|
|||||||
// 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;
|
using System;
|
||||||
using Newtonsoft.Json;
|
|
||||||
|
|
||||||
namespace osu.Game.Beatmaps
|
namespace osu.Game.Beatmaps
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Beatmap set info retrieved for previewing locally without having the set downloaded.
|
/// Beatmap set info retrieved for previewing locally without having the set downloaded.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class BeatmapSetOnlineInfo
|
public interface IBeatmapSetOnlineInfo
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The date this beatmap set was submitted to the online listing.
|
/// The date this beatmap set was submitted to the online listing.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset Submitted { get; set; }
|
DateTimeOffset Submitted { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The date this beatmap set was ranked.
|
/// The date this beatmap set was ranked.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset? Ranked { get; set; }
|
DateTimeOffset? Ranked { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The date this beatmap set was last updated.
|
/// The date this beatmap set was last updated.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTimeOffset? LastUpdated { get; set; }
|
DateTimeOffset? LastUpdated { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The status of this beatmap set.
|
/// The status of this beatmap set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public BeatmapSetOnlineStatus Status { get; set; }
|
BeatmapSetOnlineStatus Status { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether or not this beatmap set has explicit content.
|
/// Whether or not this beatmap set has explicit content.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasExplicitContent { get; set; }
|
bool HasExplicitContent { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether or not this beatmap set has a background video.
|
/// Whether or not this beatmap set has a background video.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasVideo { get; set; }
|
bool HasVideo { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether or not this beatmap set has a storyboard.
|
/// Whether or not this beatmap set has a storyboard.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasStoryboard { get; set; }
|
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>
|
||||||
public BeatmapSetOnlineCovers Covers { get; set; }
|
BeatmapSetOnlineCovers Covers { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A small sample clip of this beatmap set's song.
|
/// A small sample clip of this beatmap set's song.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Preview { get; set; }
|
string Preview { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The beats per minute of this beatmap set's song.
|
/// The beats per minute of this beatmap set's song.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public double BPM { get; set; }
|
double BPM { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The amount of plays this beatmap set has.
|
/// The amount of plays this beatmap set has.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int PlayCount { get; set; }
|
int PlayCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The amount of people who have favourited this beatmap set.
|
/// The amount of people who have favourited this beatmap set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int FavouriteCount { get; set; }
|
int FavouriteCount { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Whether this beatmap set has been favourited by the current user.
|
/// Whether this beatmap set has been favourited by the current user.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public bool HasFavourited { get; set; }
|
bool HasFavourited { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The availability of this beatmap set.
|
/// The availability of this beatmap set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public BeatmapSetOnlineAvailability Availability { get; set; }
|
BeatmapSetOnlineAvailability Availability { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The song genre of this beatmap set.
|
/// The song genre of this beatmap set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public BeatmapSetOnlineGenre Genre { get; set; }
|
BeatmapSetOnlineGenre Genre { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The song language of this beatmap set.
|
/// The song language of this beatmap set.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public BeatmapSetOnlineLanguage Language { get; set; }
|
BeatmapSetOnlineLanguage Language { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The track ID of this beatmap set.
|
/// The track ID of this beatmap set.
|
||||||
/// Non-null only if the track is linked to a featured artist track entry.
|
/// Non-null only if the track is linked to a featured artist track entry.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public int? TrackId { get; set; }
|
int? TrackId { get; set; }
|
||||||
}
|
|
||||||
|
|
||||||
public class BeatmapSetOnlineGenre
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
public string Name { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class BeatmapSetOnlineLanguage
|
|
||||||
{
|
|
||||||
public int Id { get; set; }
|
|
||||||
public string Name { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class BeatmapSetOnlineCovers
|
|
||||||
{
|
|
||||||
public string CoverLowRes { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty(@"cover@2x")]
|
|
||||||
public string Cover { get; set; }
|
|
||||||
|
|
||||||
public string CardLowRes { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty(@"card@2x")]
|
|
||||||
public string Card { get; set; }
|
|
||||||
|
|
||||||
public string ListLowRes { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty(@"list@2x")]
|
|
||||||
public string List { get; set; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public class BeatmapSetOnlineAvailability
|
|
||||||
{
|
|
||||||
[JsonProperty(@"download_disabled")]
|
|
||||||
public bool DownloadDisabled { get; set; }
|
|
||||||
|
|
||||||
[JsonProperty(@"more_information")]
|
|
||||||
public string ExternalLink { get; set; }
|
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -10,10 +10,10 @@ using osu.Game.Rulesets;
|
|||||||
|
|
||||||
namespace osu.Game.Online.API.Requests.Responses
|
namespace osu.Game.Online.API.Requests.Responses
|
||||||
{
|
{
|
||||||
public class APIBeatmapSet : BeatmapMetadata // todo: this is a bit wrong...
|
public class APIBeatmapSet : BeatmapMetadata, IBeatmapSetOnlineInfo
|
||||||
{
|
{
|
||||||
[JsonProperty(@"covers")]
|
[JsonProperty(@"covers")]
|
||||||
private BeatmapSetOnlineCovers covers { get; set; }
|
public BeatmapSetOnlineCovers Covers { get; set; }
|
||||||
|
|
||||||
private int? onlineBeatmapSetID;
|
private int? onlineBeatmapSetID;
|
||||||
|
|
||||||
@ -28,43 +28,43 @@ namespace osu.Game.Online.API.Requests.Responses
|
|||||||
public BeatmapSetOnlineStatus Status { get; set; }
|
public BeatmapSetOnlineStatus Status { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"preview_url")]
|
[JsonProperty(@"preview_url")]
|
||||||
private string preview { get; set; }
|
public string Preview { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"has_favourited")]
|
[JsonProperty(@"has_favourited")]
|
||||||
private bool hasFavourited { get; set; }
|
public bool HasFavourited { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"play_count")]
|
[JsonProperty(@"play_count")]
|
||||||
private int playCount { get; set; }
|
public int PlayCount { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"favourite_count")]
|
[JsonProperty(@"favourite_count")]
|
||||||
private int favouriteCount { get; set; }
|
public int FavouriteCount { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"bpm")]
|
[JsonProperty(@"bpm")]
|
||||||
private double bpm { get; set; }
|
public double BPM { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"nsfw")]
|
[JsonProperty(@"nsfw")]
|
||||||
private bool hasExplicitContent { get; set; }
|
public bool HasExplicitContent { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"video")]
|
[JsonProperty(@"video")]
|
||||||
private bool hasVideo { get; set; }
|
public bool HasVideo { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"storyboard")]
|
[JsonProperty(@"storyboard")]
|
||||||
private bool hasStoryboard { get; set; }
|
public bool HasStoryboard { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"submitted_date")]
|
[JsonProperty(@"submitted_date")]
|
||||||
private DateTimeOffset submitted { get; set; }
|
public DateTimeOffset Submitted { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"ranked_date")]
|
[JsonProperty(@"ranked_date")]
|
||||||
private DateTimeOffset? ranked { get; set; }
|
public DateTimeOffset? Ranked { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"last_updated")]
|
[JsonProperty(@"last_updated")]
|
||||||
private DateTimeOffset lastUpdated { get; set; }
|
public DateTimeOffset? LastUpdated { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"ratings")]
|
[JsonProperty(@"ratings")]
|
||||||
private int[] ratings { get; set; }
|
private int[] ratings { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"track_id")]
|
[JsonProperty(@"track_id")]
|
||||||
private int? trackId { get; set; }
|
public int? TrackId { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"user_id")]
|
[JsonProperty(@"user_id")]
|
||||||
private int creatorId
|
private int creatorId
|
||||||
@ -73,13 +73,13 @@ namespace osu.Game.Online.API.Requests.Responses
|
|||||||
}
|
}
|
||||||
|
|
||||||
[JsonProperty(@"availability")]
|
[JsonProperty(@"availability")]
|
||||||
private BeatmapSetOnlineAvailability availability { get; set; }
|
public BeatmapSetOnlineAvailability Availability { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"genre")]
|
[JsonProperty(@"genre")]
|
||||||
private BeatmapSetOnlineGenre genre { get; set; }
|
public BeatmapSetOnlineGenre Genre { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"language")]
|
[JsonProperty(@"language")]
|
||||||
private BeatmapSetOnlineLanguage language { get; set; }
|
public BeatmapSetOnlineLanguage Language { get; set; }
|
||||||
|
|
||||||
[JsonProperty(@"beatmaps")]
|
[JsonProperty(@"beatmaps")]
|
||||||
private IEnumerable<APIBeatmap> beatmaps { get; set; }
|
private IEnumerable<APIBeatmap> beatmaps { get; set; }
|
||||||
@ -92,26 +92,7 @@ namespace osu.Game.Online.API.Requests.Responses
|
|||||||
Metadata = this,
|
Metadata = this,
|
||||||
Status = Status,
|
Status = Status,
|
||||||
Metrics = ratings == null ? null : new BeatmapSetMetrics { Ratings = ratings },
|
Metrics = ratings == null ? null : new BeatmapSetMetrics { Ratings = ratings },
|
||||||
OnlineInfo = new BeatmapSetOnlineInfo
|
OnlineInfo = this
|
||||||
{
|
|
||||||
Covers = covers,
|
|
||||||
Preview = preview,
|
|
||||||
PlayCount = playCount,
|
|
||||||
FavouriteCount = favouriteCount,
|
|
||||||
BPM = bpm,
|
|
||||||
Status = Status,
|
|
||||||
HasExplicitContent = hasExplicitContent,
|
|
||||||
HasVideo = hasVideo,
|
|
||||||
HasStoryboard = hasStoryboard,
|
|
||||||
Submitted = submitted,
|
|
||||||
Ranked = ranked,
|
|
||||||
LastUpdated = lastUpdated,
|
|
||||||
Availability = availability,
|
|
||||||
HasFavourited = hasFavourited,
|
|
||||||
Genre = genre,
|
|
||||||
Language = language,
|
|
||||||
TrackId = trackId
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
beatmapSet.Beatmaps = beatmaps?.Select(b =>
|
beatmapSet.Beatmaps = beatmaps?.Select(b =>
|
||||||
|
@ -59,7 +59,7 @@ namespace osu.Game.Online.Rooms
|
|||||||
|
|
||||||
protected override bool VerifyDatabasedModel(BeatmapSetInfo databasedSet)
|
protected override bool VerifyDatabasedModel(BeatmapSetInfo databasedSet)
|
||||||
{
|
{
|
||||||
int? beatmapId = SelectedItem.Value?.Beatmap.Value.OnlineBeatmapID;
|
int beatmapId = SelectedItem.Value?.Beatmap.Value.OnlineID ?? -1;
|
||||||
string checksum = SelectedItem.Value?.Beatmap.Value.MD5Hash;
|
string checksum = SelectedItem.Value?.Beatmap.Value.MD5Hash;
|
||||||
|
|
||||||
var matchingBeatmap = databasedSet.Beatmaps.FirstOrDefault(b => b.OnlineBeatmapID == beatmapId && b.MD5Hash == checksum);
|
var matchingBeatmap = databasedSet.Beatmaps.FirstOrDefault(b => b.OnlineBeatmapID == beatmapId && b.MD5Hash == checksum);
|
||||||
@ -75,10 +75,10 @@ namespace osu.Game.Online.Rooms
|
|||||||
|
|
||||||
protected override bool IsModelAvailableLocally()
|
protected override bool IsModelAvailableLocally()
|
||||||
{
|
{
|
||||||
int? beatmapId = SelectedItem.Value.Beatmap.Value.OnlineBeatmapID;
|
int onlineId = SelectedItem.Value.Beatmap.Value.OnlineID;
|
||||||
string checksum = SelectedItem.Value.Beatmap.Value.MD5Hash;
|
string checksum = SelectedItem.Value.Beatmap.Value.MD5Hash;
|
||||||
|
|
||||||
var beatmap = Manager.QueryBeatmap(b => b.OnlineBeatmapID == beatmapId && b.MD5Hash == checksum);
|
var beatmap = Manager.QueryBeatmap(b => b.OnlineBeatmapID == onlineId && b.MD5Hash == checksum);
|
||||||
return beatmap?.BeatmapSet.DeletePending == false;
|
return beatmap?.BeatmapSet.DeletePending == false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ namespace osu.Game.Overlays.BeatmapListing
|
|||||||
private readonly BeatmapSearchFilterRow<SearchExplicit> explicitContentFilter;
|
private readonly BeatmapSearchFilterRow<SearchExplicit> explicitContentFilter;
|
||||||
|
|
||||||
private readonly Box background;
|
private readonly Box background;
|
||||||
private readonly UpdateableBeatmapSetCover beatmapCover;
|
private readonly UpdateableOnlineBeatmapSetCover beatmapCover;
|
||||||
|
|
||||||
public BeatmapListingSearchControl()
|
public BeatmapListingSearchControl()
|
||||||
{
|
{
|
||||||
@ -196,7 +196,7 @@ namespace osu.Game.Overlays.BeatmapListing
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class TopSearchBeatmapSetCover : UpdateableBeatmapSetCover
|
private class TopSearchBeatmapSetCover : UpdateableOnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
protected override bool TransformImmediately => true;
|
protected override bool TransformImmediately => true;
|
||||||
}
|
}
|
||||||
|
@ -160,7 +160,7 @@ namespace osu.Game.Overlays.BeatmapListing.Panels
|
|||||||
return icons;
|
return icons;
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Drawable CreateBackground() => new UpdateableBeatmapSetCover
|
protected Drawable CreateBackground() => new UpdateableOnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
BeatmapSet = SetInfo,
|
BeatmapSet = SetInfo,
|
||||||
|
@ -32,7 +32,7 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
public readonly Details Details;
|
public readonly Details Details;
|
||||||
public readonly BeatmapPicker Picker;
|
public readonly BeatmapPicker Picker;
|
||||||
|
|
||||||
private readonly UpdateableBeatmapSetCover cover;
|
private readonly UpdateableOnlineBeatmapSetCover cover;
|
||||||
private readonly Box coverGradient;
|
private readonly Box coverGradient;
|
||||||
private readonly OsuSpriteText title, artist;
|
private readonly OsuSpriteText title, artist;
|
||||||
private readonly AuthorInfo author;
|
private readonly AuthorInfo author;
|
||||||
@ -68,7 +68,7 @@ namespace osu.Game.Overlays.BeatmapSet
|
|||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
cover = new UpdateableBeatmapSetCover
|
cover = new UpdateableOnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Masking = true,
|
Masking = true,
|
||||||
|
@ -77,7 +77,7 @@ namespace osu.Game.Overlays.Dashboard.Home
|
|||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Masking = true,
|
Masking = true,
|
||||||
CornerRadius = 6,
|
CornerRadius = 6,
|
||||||
Child = new UpdateableBeatmapSetCover
|
Child = new UpdateableOnlineBeatmapSetCover
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Anchor = Anchor.Centre,
|
Anchor = Anchor.Centre,
|
||||||
|
@ -42,7 +42,7 @@ namespace osu.Game.Overlays.Profile.Sections.Historical
|
|||||||
{
|
{
|
||||||
AddRangeInternal(new Drawable[]
|
AddRangeInternal(new Drawable[]
|
||||||
{
|
{
|
||||||
new UpdateableBeatmapSetCover(BeatmapSetCoverType.List)
|
new UpdateableOnlineBeatmapSetCover(BeatmapSetCoverType.List)
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Y,
|
RelativeSizeAxes = Axes.Y,
|
||||||
Width = cover_width,
|
Width = cover_width,
|
||||||
|
@ -86,7 +86,7 @@ namespace osu.Game.Screens.OnlinePlay.Components
|
|||||||
Text = new RomanisableString(beatmap.Value.Metadata.TitleUnicode, beatmap.Value.Metadata.Title),
|
Text = new RomanisableString(beatmap.Value.Metadata.TitleUnicode, beatmap.Value.Metadata.Title),
|
||||||
Font = OsuFont.GetFont(size: TextSize),
|
Font = OsuFont.GetFont(size: TextSize),
|
||||||
}
|
}
|
||||||
}, LinkAction.OpenBeatmap, beatmap.Value.OnlineBeatmapID.ToString(), "Open beatmap");
|
}, LinkAction.OpenBeatmap, beatmap.Value.OnlineID.ToString(), "Open beatmap");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ using System.Text;
|
|||||||
using osu.Framework.Extensions;
|
using osu.Framework.Extensions;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.IO;
|
using osu.Game.IO;
|
||||||
|
using osu.Game.Online.API.Requests.Responses;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using Decoder = osu.Game.Beatmaps.Formats.Decoder;
|
using Decoder = osu.Game.Beatmaps.Formats.Decoder;
|
||||||
|
|
||||||
@ -32,7 +33,7 @@ namespace osu.Game.Tests.Beatmaps
|
|||||||
BeatmapInfo.BeatmapSet.Beatmaps = new List<BeatmapInfo> { BeatmapInfo };
|
BeatmapInfo.BeatmapSet.Beatmaps = new List<BeatmapInfo> { BeatmapInfo };
|
||||||
BeatmapInfo.Length = 75000;
|
BeatmapInfo.Length = 75000;
|
||||||
BeatmapInfo.OnlineInfo = new BeatmapOnlineInfo();
|
BeatmapInfo.OnlineInfo = new BeatmapOnlineInfo();
|
||||||
BeatmapInfo.BeatmapSet.OnlineInfo = new BeatmapSetOnlineInfo
|
BeatmapInfo.BeatmapSet.OnlineInfo = new APIBeatmapSet
|
||||||
{
|
{
|
||||||
Status = BeatmapSetOnlineStatus.Ranked,
|
Status = BeatmapSetOnlineStatus.Ranked,
|
||||||
Covers = new BeatmapSetOnlineCovers
|
Covers = new BeatmapSetOnlineCovers
|
||||||
|
Loading…
Reference in New Issue
Block a user