1
0
mirror of https://github.com/ppy/osu.git synced 2025-02-15 11:02:57 +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 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) ?
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.
// 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
{
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
{
public class GetChangelogRequest : APIRequest<APIChangelogBuild[]>
public class GetChangelogRequest : APIRequest<APIChangelogIndex>
{
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")]
public long Users { get; set; }
[JsonProperty("is_featured")]
public bool IsFeatured { get; set; }
[JsonProperty("created_at")]
public DateTimeOffset CreatedAt { get; set; }
@ -114,7 +111,13 @@ namespace osu.Game.Online.API.Requests.Responses
[JsonProperty("name")]
public string Name { get; set; }
[JsonProperty("is_featured")]
public bool IsFeatured { get; set; }
[JsonProperty("display_name")]
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);
streamBadge.Selected += onBadgeSelected;
@ -75,9 +75,9 @@ namespace osu.Game.Overlays.Changelog
{
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();
}
else
@ -87,13 +87,13 @@ namespace osu.Game.Overlays.Changelog
private void onBadgeSelected(StreamBadge source, EventArgs args)
{
selectedStreamId = source.LatestBuild.UpdateStream.Id;
selectedStreamId = source.Stream.Id;
OnSelected(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)
@ -102,7 +102,7 @@ namespace osu.Game.Overlays.Changelog
{
if (selectedStreamId >= 0)
{
if (selectedStreamId != streamBadge.LatestBuild.UpdateStream.Id)
if (selectedStreamId != streamBadge.Stream.Id)
streamBadge.Deactivate();
else
streamBadge.EnableDim();
@ -120,7 +120,7 @@ namespace osu.Game.Overlays.Changelog
{
if (selectedStreamId < 0)
streamBadge.Activate();
else if (streamBadge.LatestBuild.UpdateStream.Id == selectedStreamId)
else if (streamBadge.Stream.Id == selectedStreamId)
streamBadge.DisableDim();
}

View File

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

View File

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

View File

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