using System;
using VRage.Collections;
using VRage.Game;
using VRageMath;
namespace Torch.API.Managers
{
///
/// Callback used to indicate the server has recieved a message to process and forward on to others.
///
/// Steam ID of the user sending a message
/// Message the user is attempting to send
/// If true, this event has been consumed and should be ignored
public delegate void MessageProcessingDel(TorchChatMessage msg, ref bool consumed);
public interface IChatManagerServer : IChatManagerClient
{
///
/// Event triggered when the server has recieved a message and should process it.
///
event MessageProcessingDel MessageProcessing;
///
/// Sends a message with the given author and message to the given player, or all players by default.
///
/// Author's steam ID
/// The message to send
/// Player to send the message to, or everyone by default
void SendMessageAsOther(ulong authorId, string message, ulong targetSteamId = 0);
[Obsolete("Use the other overload with a Color parameter.")]
void SendMessageAsOther(string author, string message, string font, ulong targetSteamId = 0);
///
/// Sends a scripted message with the given author and message to the given player, or all players by default.
///
/// Author name
/// The message to send
/// Name color
/// Font to use
/// Player to send the message to, or everyone by default
void SendMessageAsOther(string author, string message, Color color = default, ulong targetSteamId = 0, string font = MyFontEnum.White);
///
/// Mute user from global chat.
///
///
///
bool MuteUser(ulong steamId);
///
/// Unmute user from global chat.
///
///
///
bool UnmuteUser(ulong steamId);
///
/// Users which are not allowed to chat.
///
HashSetReader MutedUsers { get; }
}
}