1
0
mirror of https://github.com/ppy/osu.git synced 2025-01-28 06:42:54 +08:00

Add error message in chat when attempting to use commands

This commit is contained in:
Dean Herbert 2017-05-15 13:26:35 +09:00
parent eb55d9a1ae
commit dcd4b4450d
5 changed files with 71 additions and 33 deletions

View File

@ -38,9 +38,9 @@ namespace osu.Game.Online.Chat
public event Action<IEnumerable<Message>> NewMessagesArrived;
public void AddNewMessages(IEnumerable<Message> messages)
public void AddNewMessages(params Message[] messages)
{
messages = messages.Except(Messages).ToList();
messages = messages.Except(Messages).ToArray();
Messages.AddRange(messages);

View File

@ -0,0 +1,25 @@
// Copyright (c) 2007-2017 ppy Pty Ltd <contact@ppy.sh>.
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
using System;
using osu.Game.Users;
namespace osu.Game.Online.Chat
{
public class ErrorMessage : Message
{
private static int errorId = -1;
public ErrorMessage(string message) : base(errorId--)
{
Timestamp = DateTime.Now;
Content = message;
Sender = new User
{
Username = @"system",
Colour = @"ff0000",
};
}
}
}

View File

@ -37,6 +37,11 @@ namespace osu.Game.Online.Chat
{
}
public Message(long id)
{
Id = id;
}
public override bool Equals(object obj)
{
var objMessage = obj as Message;

View File

@ -306,7 +306,7 @@ namespace osu.Game.Overlays
//batch messages per channel.
foreach (var id in ids)
careChannels.Find(c => c.Id == id)?.AddNewMessages(messages.Where(m => m.TargetId == id));
careChannels.Find(c => c.Id == id)?.AddNewMessages(messages.Where(m => m.TargetId == id).ToArray());
lastMessageId = messages.LastOrDefault()?.Id ?? lastMessageId;
@ -326,38 +326,45 @@ namespace osu.Game.Overlays
{
var postText = textbox.Text;
if (!string.IsNullOrEmpty(postText) && api.LocalUser.Value != null)
if (string.IsNullOrEmpty(postText) || api.LocalUser.Value == null) return;
if (currentChannel == null) return;
if (postText[0] == '/')
{
if (currentChannel == null) return;
var message = new Message
{
Sender = api.LocalUser.Value,
Timestamp = DateTimeOffset.Now,
TargetType = TargetType.Channel, //TODO: read this from currentChannel
TargetId = currentChannel.Id,
Content = postText
};
textbox.ReadOnly = true;
var req = new PostMessageRequest(message);
req.Failure += e =>
{
textbox.FlashColour(Color4.Red, 1000);
textbox.ReadOnly = false;
};
req.Success += m =>
{
currentChannel.AddNewMessages(new[] { m });
textbox.ReadOnly = false;
textbox.Text = string.Empty;
};
api.Queue(req);
// TODO: handle commands
currentChannel.AddNewMessages(new ErrorMessage("Chat commands are not supported yet!"));
textbox.Text = string.Empty;
return;
}
var message = new Message
{
Sender = api.LocalUser.Value,
Timestamp = DateTimeOffset.Now,
TargetType = TargetType.Channel, //TODO: read this from currentChannel
TargetId = currentChannel.Id,
Content = postText
};
textbox.ReadOnly = true;
var req = new PostMessageRequest(message);
req.Failure += e =>
{
textbox.FlashColour(Color4.Red, 1000);
textbox.ReadOnly = false;
};
req.Success += m =>
{
currentChannel.AddNewMessages(m);
textbox.ReadOnly = false;
textbox.Text = string.Empty;
};
api.Queue(req);
}
}
}

View File

@ -75,6 +75,7 @@
<Compile Include="Beatmaps\Drawables\BeatmapBackgroundSprite.cs" />
<Compile Include="Beatmaps\DifficultyCalculator.cs" />
<Compile Include="Online\API\Requests\PostMessageRequest.cs" />
<Compile Include="Online\Chat\ErrorMessage.cs" />
<Compile Include="Overlays\Chat\ChatTabControl.cs" />
<Compile Include="Overlays\Music\FilterControl.cs" />
<Compile Include="Overlays\Music\PlaylistItem.cs" />