1
0
mirror of https://github.com/ppy/osu.git synced 2024-12-15 09:42:54 +08:00

implemented method formatting into chat. Also added all necessary files to the .csproj

This commit is contained in:
FreezyLemon 2017-12-01 21:04:24 +01:00
parent 78ff5d81d3
commit 7f1f886406
2 changed files with 37 additions and 9 deletions

View File

@ -67,12 +67,13 @@ namespace osu.Game.Overlays.Chat
private const float text_size = 20; private const float text_size = 20;
private Color4 customUsernameColour; private Color4 customUsernameColour;
private Color4 urlColour;
private OsuSpriteText timestamp; private OsuSpriteText timestamp;
public ChatLine(Message message) public ChatLine(Message message)
{ {
Message = message; Message = MessageFormatter.FormatMessage(message);
RelativeSizeAxes = Axes.X; RelativeSizeAxes = Axes.X;
AutoSizeAxes = Axes.Y; AutoSizeAxes = Axes.Y;
@ -82,7 +83,7 @@ namespace osu.Game.Overlays.Chat
private Message message; private Message message;
private OsuSpriteText username; private OsuSpriteText username;
private OsuTextFlowContainer contentFlow; private OsuLinkTextFlowContainer<ChatLinkSpriteText> contentFlow;
public Message Message public Message Message
{ {
@ -104,6 +105,7 @@ namespace osu.Game.Overlays.Chat
private void load(OsuColour colours) private void load(OsuColour colours)
{ {
customUsernameColour = colours.ChatBlue; customUsernameColour = colours.ChatBlue;
urlColour = colours.Blue;
} }
private bool senderHasBackground => !string.IsNullOrEmpty(message.Sender.Colour); private bool senderHasBackground => !string.IsNullOrEmpty(message.Sender.Colour);
@ -187,7 +189,7 @@ namespace osu.Game.Overlays.Chat
Padding = new MarginPadding { Left = message_padding + padding }, Padding = new MarginPadding { Left = message_padding + padding },
Children = new Drawable[] Children = new Drawable[]
{ {
contentFlow = new OsuTextFlowContainer(t => { t.TextSize = text_size; }) contentFlow = new OsuLinkTextFlowContainer<ChatLinkSpriteText>(t => { t.TextSize = text_size; })
{ {
AutoSizeAxes = Axes.Y, AutoSizeAxes = Axes.Y,
RelativeSizeAxes = Axes.X, RelativeSizeAxes = Axes.X,
@ -210,16 +212,38 @@ namespace osu.Game.Overlays.Chat
timestamp.Text = $@"{message.Timestamp.LocalDateTime:HH:mm:ss}"; timestamp.Text = $@"{message.Timestamp.LocalDateTime:HH:mm:ss}";
username.Text = $@"{message.Sender.Username}" + (senderHasBackground ? "" : ":"); username.Text = $@"{message.Sender.Username}" + (senderHasBackground ? "" : ":");
if (message.IsAction) contentFlow.Clear();
if (message.Links == null || message.Links.Count == 0)
{ {
contentFlow.Clear(); contentFlow.AddText(message.Content, sprite =>
contentFlow.AddText("[", sprite => sprite.Padding = new MarginPadding { Right = action_padding }); {
contentFlow.AddText(message.Content, sprite => sprite.Font = @"Exo2.0-MediumItalic"); if (message.IsAction)
contentFlow.AddText("]", sprite => sprite.Padding = new MarginPadding { Left = action_padding }); sprite.Font = @"Exo2.0-MediumItalic";
});
return;
} }
else else
contentFlow.Text = message.Content; {
int prevIndex = 0;
foreach (var link in message.Links)
{
contentFlow.AddText(message.Content.Substring(prevIndex, link.Index - prevIndex));
prevIndex = link.Index + link.Length;
contentFlow.AddLink(message.Content.Substring(link.Index, link.Length), link.Url, sprite =>
{
if (message.IsAction)
sprite.Font = @"Exo2.0-MediumItalic";
sprite.Colour = urlColour;
});
}
// Add text after the last link
var lastLink = message.Links[message.Links.Count - 1];
contentFlow.AddText(message.Content.Substring(lastLink.Index + lastLink.Length));
}
} }
private class MessageSender : OsuClickableContainer, IHasContextMenu private class MessageSender : OsuClickableContainer, IHasContextMenu

View File

@ -268,6 +268,8 @@
<Compile Include="Beatmaps\Drawables\BeatmapSetHeader.cs" /> <Compile Include="Beatmaps\Drawables\BeatmapSetHeader.cs" />
<Compile Include="Database\DatabaseContextFactory.cs" /> <Compile Include="Database\DatabaseContextFactory.cs" />
<Compile Include="Database\IHasPrimaryKey.cs" /> <Compile Include="Database\IHasPrimaryKey.cs" />
<Compile Include="Graphics\Containers\OsuLinkTextFlowContainer.cs" />
<Compile Include="Graphics\Sprites\OsuLinkSpriteText.cs" />
<Compile Include="Graphics\UserInterface\HoverClickSounds.cs" /> <Compile Include="Graphics\UserInterface\HoverClickSounds.cs" />
<Compile Include="Graphics\UserInterface\HoverSounds.cs" /> <Compile Include="Graphics\UserInterface\HoverSounds.cs" />
<Compile Include="Graphics\UserInterface\OsuButton.cs" /> <Compile Include="Graphics\UserInterface\OsuButton.cs" />
@ -286,6 +288,8 @@
<Compile Include="Migrations\OsuDbContextModelSnapshot.cs" /> <Compile Include="Migrations\OsuDbContextModelSnapshot.cs" />
<Compile Include="Online\API\Requests\GetBeatmapSetRequest.cs" /> <Compile Include="Online\API\Requests\GetBeatmapSetRequest.cs" />
<Compile Include="Online\API\Requests\GetBeatmapSetsResponse.cs" /> <Compile Include="Online\API\Requests\GetBeatmapSetsResponse.cs" />
<Compile Include="Online\Chat\ChatLinkSpriteText.cs" />
<Compile Include="Online\Chat\MessageFormatter.cs" />
<Compile Include="Overlays\BeatmapSet\Scores\ClickableUsername.cs" /> <Compile Include="Overlays\BeatmapSet\Scores\ClickableUsername.cs" />
<Compile Include="Overlays\BeatmapSet\Scores\DrawableScore.cs" /> <Compile Include="Overlays\BeatmapSet\Scores\DrawableScore.cs" />
<Compile Include="Overlays\BeatmapSet\Scores\DrawableTopScore.cs" /> <Compile Include="Overlays\BeatmapSet\Scores\DrawableTopScore.cs" />