1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-08 15:17:52 +08:00
osu-lazer/osu.Game/Overlays/Profile/Sections/Kudosu/DrawableKudosuHistoryItem.cs

97 lines
3.3 KiB
C#
Raw Normal View History

// 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.Framework.Allocation;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Game.Graphics;
using osu.Game.Graphics.Containers;
using osu.Game.Online.API.Requests.Responses;
2019-08-19 02:28:07 +08:00
using osu.Game.Online.API.Requests;
using osu.Game.Online.Chat;
namespace osu.Game.Overlays.Profile.Sections.Kudosu
{
public class DrawableKudosuHistoryItem : DrawableProfileRow
{
private readonly APIKudosuHistory historyItem;
private LinkFlowContainer content;
public DrawableKudosuHistoryItem(APIKudosuHistory historyItem)
{
this.historyItem = historyItem;
}
[BackgroundDependencyLoader]
private void load()
{
LeftFlowContainer.Padding = new MarginPadding { Left = 10 };
LeftFlowContainer.Add(content = new LinkFlowContainer
{
AutoSizeAxes = Axes.Y,
RelativeSizeAxes = Axes.X,
});
RightFlowContainer.Add(new DrawableDate(historyItem.CreatedAt)
{
Font = OsuFont.GetFont(size: 13),
Colour = OsuColour.Gray(0xAA),
Anchor = Anchor.TopRight,
Origin = Anchor.TopRight,
});
var formatted = createMessage();
content.AddLinks(formatted.Text, formatted.Links);
}
protected override Drawable CreateLeftVisual() => new Container
{
RelativeSizeAxes = Axes.Y,
AutoSizeAxes = Axes.X,
};
2019-08-19 02:28:07 +08:00
private MessageFormatter.MessageFormatterResult createMessage()
{
string postLinkTemplate() => $"({historyItem.Post.Title})[{historyItem.Post.Url}]";
2019-08-19 02:28:07 +08:00
string userLinkTemplate() => $"[{historyItem.Giver?.Url} {historyItem.Giver?.Username}]";
string message;
switch (historyItem.Action)
{
case KudosuAction.Give:
message = $"Received {historyItem.Amount} kudosu from {userLinkTemplate()} for a post at {postLinkTemplate()}";
break;
case KudosuAction.VoteGive:
message = $"Received {historyItem.Amount} kudosu from obtaining votes in modding post of {postLinkTemplate()}";
break;
case KudosuAction.Reset:
message = $"Kudosu reset by {userLinkTemplate()} for the post {postLinkTemplate()}";
break;
case KudosuAction.VoteReset:
message = $"Lost {historyItem.Amount} kudosu from losing votes in modding post of {postLinkTemplate()}";
break;
case KudosuAction.DenyKudosuReset:
message = $"Denied {historyItem.Amount} kudosu from modding post {postLinkTemplate()}";
break;
case KudosuAction.Revoke:
message = $"Denied kudosu by {userLinkTemplate()} for the post {postLinkTemplate()}";
break;
default:
message = string.Empty;
break;
}
return MessageFormatter.FormatText(message);
}
}
}