1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 20:53:00 +08:00

Initial pass to make work with real API

This commit is contained in:
Dean Herbert 2019-05-13 16:24:32 +09:00
parent 31b72f168d
commit 219c590b8a
10 changed files with 44 additions and 33 deletions

View File

@ -17,6 +17,5 @@ namespace osu.Game.Online.API.Requests
} }
protected override string Target => $@"changelog/{name}/{version}"; protected override string Target => $@"changelog/{name}/{version}";
protected override string Uri => $@"https://houtarouoreki.github.io/fake-api/{Target}"; // for testing
} }
} }

View File

@ -21,7 +21,5 @@ namespace osu.Game.Online.API.Requests
protected override string Target => $@"changelog/{(!string.IsNullOrEmpty(updateStream) ? protected override string Target => $@"changelog/{(!string.IsNullOrEmpty(updateStream) ?
updateStream + "/" : "")}chart-config"; updateStream + "/" : "")}chart-config";
protected override string Uri => $@"https://houtarouoreki.github.io/fake-api/{Target}"; // for testing
} }
} }

View File

@ -1,14 +1,9 @@
// 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 osu.Game.Online.API.Requests.Responses;
using System.Collections.Generic;
namespace osu.Game.Online.API.Requests namespace osu.Game.Online.API.Requests
{ {
public class GetChangelogLatestBuildsRequest : APIRequest<List<APIChangelogBuild>> public class GetChangelogLatestBuildsRequest : GetChangelogRequest
{ {
protected override string Target => @"changelog/latest-builds";
protected override string Uri => $@"https://houtarouoreki.github.io/fake-api/{Target}"; // for testing
} }
} }

View File

@ -5,9 +5,8 @@ using osu.Game.Online.API.Requests.Responses;
namespace osu.Game.Online.API.Requests namespace osu.Game.Online.API.Requests
{ {
public class GetChangelogRequest : APIRequest<APIChangelogBuild[]> public class GetChangelogRequest : APIRequest<APIChangelogIndex>
{ {
protected override string Target => @"changelog"; protected override string Target => @"changelog";
protected override string Uri => $@"https://houtarouoreki.github.io/fake-api/{Target}/index"; // for testing
} }
} }

View File

@ -21,9 +21,6 @@ namespace osu.Game.Online.API.Requests.Responses
[JsonProperty("users")] [JsonProperty("users")]
public long Users { get; set; } public long Users { get; set; }
[JsonProperty("is_featured")]
public bool IsFeatured { get; set; }
[JsonProperty("created_at")] [JsonProperty("created_at")]
public DateTimeOffset CreatedAt { get; set; } public DateTimeOffset CreatedAt { get; set; }
@ -114,7 +111,13 @@ namespace osu.Game.Online.API.Requests.Responses
[JsonProperty("name")] [JsonProperty("name")]
public string Name { get; set; } public string Name { get; set; }
[JsonProperty("is_featured")]
public bool IsFeatured { get; set; }
[JsonProperty("display_name")] [JsonProperty("display_name")]
public string DisplayName { get; set; } public string DisplayName { get; set; }
[JsonProperty("latest_build")]
public APIChangelogBuild LatestBuild { get; set; }
} }
} }

View File

@ -0,0 +1,14 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text.
using System.Collections.Generic;
namespace osu.Game.Online.API.Requests.Responses
{
public class APIChangelogIndex
{
public List<APIChangelogBuild> Builds;
public List<UpdateStream> Streams;
}
}

View File

@ -45,9 +45,9 @@ namespace osu.Game.Overlays.Changelog
}; };
} }
public void Populate(List<APIChangelogBuild> latestBuilds) public void Populate(List<UpdateStream> streams)
{ {
foreach (APIChangelogBuild updateStream in latestBuilds) foreach (UpdateStream updateStream in streams)
{ {
var streamBadge = new StreamBadge(updateStream); var streamBadge = new StreamBadge(updateStream);
streamBadge.Selected += onBadgeSelected; streamBadge.Selected += onBadgeSelected;
@ -75,9 +75,9 @@ namespace osu.Game.Overlays.Changelog
{ {
foreach (StreamBadge streamBadge in badgesContainer) foreach (StreamBadge streamBadge in badgesContainer)
{ {
if (streamBadge.LatestBuild.UpdateStream.Name == updateStream) if (streamBadge.Stream.Name == updateStream)
{ {
selectedStreamId = streamBadge.LatestBuild.UpdateStream.Id; selectedStreamId = streamBadge.Stream.Id;
streamBadge.Activate(); streamBadge.Activate();
} }
else else
@ -87,13 +87,13 @@ namespace osu.Game.Overlays.Changelog
private void onBadgeSelected(StreamBadge source, EventArgs args) private void onBadgeSelected(StreamBadge source, EventArgs args)
{ {
selectedStreamId = source.LatestBuild.UpdateStream.Id; selectedStreamId = source.Stream.Id;
OnSelected(source); OnSelected(source);
} }
protected virtual void OnSelected(StreamBadge source) protected virtual void OnSelected(StreamBadge source)
{ {
Selected?.Invoke(source.LatestBuild, EventArgs.Empty); Selected?.Invoke(source.Stream.LatestBuild, EventArgs.Empty);
} }
protected override bool OnHover(HoverEvent e) protected override bool OnHover(HoverEvent e)
@ -102,7 +102,7 @@ namespace osu.Game.Overlays.Changelog
{ {
if (selectedStreamId >= 0) if (selectedStreamId >= 0)
{ {
if (selectedStreamId != streamBadge.LatestBuild.UpdateStream.Id) if (selectedStreamId != streamBadge.Stream.Id)
streamBadge.Deactivate(); streamBadge.Deactivate();
else else
streamBadge.EnableDim(); streamBadge.EnableDim();
@ -120,7 +120,7 @@ namespace osu.Game.Overlays.Changelog
{ {
if (selectedStreamId < 0) if (selectedStreamId < 0)
streamBadge.Activate(); streamBadge.Activate();
else if (streamBadge.LatestBuild.UpdateStream.Id == selectedStreamId) else if (streamBadge.Stream.Id == selectedStreamId)
streamBadge.DisableDim(); streamBadge.DisableDim();
} }

View File

@ -6,6 +6,7 @@ using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes; using osu.Framework.Graphics.Shapes;
using osu.Game.Online.API.Requests.Responses; using osu.Game.Online.API.Requests.Responses;
using System; using System;
using System.Collections.Generic;
using osuTK.Graphics; using osuTK.Graphics;
namespace osu.Game.Overlays.Changelog namespace osu.Game.Overlays.Changelog
@ -26,7 +27,7 @@ namespace osu.Game.Overlays.Changelog
Padding = new MarginPadding { Bottom = 100 }; Padding = new MarginPadding { Bottom = 100 };
} }
public void ShowListing(APIChangelogBuild[] changelog) public void ShowListing(List<APIChangelogBuild> changelog)
{ {
DateTime currentDate = new DateTime(); DateTime currentDate = new DateTime();
Clear(); Clear();

View File

@ -32,14 +32,16 @@ namespace osu.Game.Overlays.Changelog
private SampleChannel sampleClick; private SampleChannel sampleClick;
private SampleChannel sampleHover; private SampleChannel sampleHover;
public readonly APIChangelogBuild LatestBuild; public readonly UpdateStream Stream;
private readonly FillFlowContainer<SpriteText> text; private readonly FillFlowContainer<SpriteText> text;
public StreamBadge(APIChangelogBuild latestBuild) public StreamBadge(UpdateStream stream)
{ {
LatestBuild = latestBuild; Stream = stream;
Height = badge_height; Height = badge_height;
Width = LatestBuild.IsFeatured ? badge_width * 2 : badge_width; Width = stream.IsFeatured ? badge_width * 2 : badge_width;
Padding = new MarginPadding(5); Padding = new MarginPadding(5);
isActivated = true; isActivated = true;
Children = new Drawable[] Children = new Drawable[]
@ -53,18 +55,18 @@ namespace osu.Game.Overlays.Changelog
{ {
new SpriteText new SpriteText
{ {
Text = LatestBuild.UpdateStream.DisplayName, Text = stream.DisplayName,
Font = OsuFont.GetFont(weight: FontWeight.Bold, size: 14), // web: 12, Font = OsuFont.GetFont(weight: FontWeight.Bold, size: 14), // web: 12,
Margin = new MarginPadding { Top = 6 }, Margin = new MarginPadding { Top = 6 },
}, },
new SpriteText new SpriteText
{ {
Text = LatestBuild.DisplayVersion, Text = stream.LatestBuild.DisplayVersion,
Font = OsuFont.GetFont(weight: FontWeight.Light, size: 20), // web: 16, Font = OsuFont.GetFont(weight: FontWeight.Light, size: 20), // web: 16,
}, },
new SpriteText new SpriteText
{ {
Text = LatestBuild.Users > 0 ? $"{LatestBuild.Users:N0} users online" : null, Text = stream.LatestBuild.Users > 0 ? $"{stream.LatestBuild.Users:N0} users online" : null,
Font = OsuFont.GetFont(weight: FontWeight.Regular, size: 12), // web: 10, Font = OsuFont.GetFont(weight: FontWeight.Regular, size: 12), // web: 10,
Colour = new Color4(203, 164, 218, 255), Colour = new Color4(203, 164, 218, 255),
}, },
@ -73,7 +75,7 @@ namespace osu.Game.Overlays.Changelog
lineBadge = new LineBadge(false) lineBadge = new LineBadge(false)
{ {
Anchor = Anchor.TopCentre, Anchor = Anchor.TopCentre,
Colour = StreamColour.FromStreamName(LatestBuild.UpdateStream.Name), Colour = StreamColour.FromStreamName(stream.Name),
UncollapsedSize = 4, UncollapsedSize = 4,
CollapsedSize = 2, CollapsedSize = 2,
}, },

View File

@ -111,7 +111,7 @@ namespace osu.Game.Overlays
protected override void LoadComplete() protected override void LoadComplete()
{ {
var req = new GetChangelogLatestBuildsRequest(); var req = new GetChangelogLatestBuildsRequest();
req.Success += badges.Populate; req.Success += res => badges.Populate(res.Streams);
api.Queue(req); api.Queue(req);
fetchListing(); fetchListing();
base.LoadComplete(); base.LoadComplete();
@ -168,7 +168,7 @@ namespace osu.Game.Overlays
isAtListing = true; isAtListing = true;
var req = new GetChangelogRequest(); var req = new GetChangelogRequest();
badges.SelectNone(); badges.SelectNone();
req.Success += listing.ShowListing; req.Success += res => listing.ShowListing(res.Builds);
api.Queue(req); api.Queue(req);
} }