Client manager components
- ReflectedManager now supports MemberInfo and event replacement - New chat manager interfaces for both client and server - New multiplayer manager interfaces for both client and server
This commit is contained in:
@@ -44,10 +44,6 @@ namespace Torch.API
|
||||
/// </summary>
|
||||
ITorchConfig Config { get; }
|
||||
|
||||
/// <inheritdoc cref="IMultiplayerManager"/>
|
||||
[Obsolete]
|
||||
IMultiplayerManager Multiplayer { get; }
|
||||
|
||||
/// <inheritdoc cref="IPluginManager"/>
|
||||
[Obsolete]
|
||||
IPluginManager Plugins { get; }
|
||||
@@ -55,6 +51,12 @@ namespace Torch.API
|
||||
/// <inheritdoc cref="IDependencyManager"/>
|
||||
IDependencyManager Managers { get; }
|
||||
|
||||
[Obsolete("Prefer using Managers.GetManager for global managers")]
|
||||
T GetManager<T>() where T : class, IManager;
|
||||
|
||||
[Obsolete("Prefer using Managers.AddManager for global managers")]
|
||||
bool AddManager<T>(T manager) where T : class, IManager;
|
||||
|
||||
/// <summary>
|
||||
/// The binary version of the current instance.
|
||||
/// </summary>
|
||||
|
74
Torch.API/Managers/IChatManagerClient.cs
Normal file
74
Torch.API/Managers/IChatManagerClient.cs
Normal file
@@ -0,0 +1,74 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using VRage.Network;
|
||||
|
||||
namespace Torch.API.Managers
|
||||
{
|
||||
/// <summary>
|
||||
/// Represents a scripted or user chat message.
|
||||
/// </summary>
|
||||
public struct TorchChatMessage
|
||||
{
|
||||
/// <summary>
|
||||
/// The author's steam ID, if available. Else, null.
|
||||
/// </summary>
|
||||
public ulong? AuthorSteamId;
|
||||
/// <summary>
|
||||
/// The author's name, if available. Else, null.
|
||||
/// </summary>
|
||||
public string Author;
|
||||
/// <summary>
|
||||
/// The message contents.
|
||||
/// </summary>
|
||||
public string Message;
|
||||
/// <summary>
|
||||
/// The font, or null if default.
|
||||
/// </summary>
|
||||
public string Font;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Callback used to indicate that a messaage has been recieved.
|
||||
/// </summary>
|
||||
/// <param name="msg"></param>
|
||||
/// <param name="consumed">If true, this event has been consumed and should be ignored</param>
|
||||
public delegate void DelMessageRecieved(TorchChatMessage msg, ref bool consumed);
|
||||
|
||||
/// <summary>
|
||||
/// Callback used to indicate the user is attempting to send a message locally.
|
||||
/// </summary>
|
||||
/// <param name="msg">Message the user is attempting to send</param>
|
||||
/// <param name="consumed">If true, this event has been consumed and should be ignored</param>
|
||||
public delegate void DelMessageSending(string msg, ref bool consumed);
|
||||
|
||||
public interface IChatManagerClient : IManager
|
||||
{
|
||||
/// <summary>
|
||||
/// Event that is raised when a message addressed to us is recieved. <see cref="DelMessageRecieved"/>
|
||||
/// </summary>
|
||||
event DelMessageRecieved MessageRecieved;
|
||||
|
||||
/// <summary>
|
||||
/// Event that is raised when we are attempting to send a message. <see cref="DelMessageSending"/>
|
||||
/// </summary>
|
||||
event DelMessageSending MessageSending;
|
||||
|
||||
/// <summary>
|
||||
/// Triggers the <see cref="MessageSending"/> event,
|
||||
/// typically raised by the user entering text into the chat window.
|
||||
/// </summary>
|
||||
/// <param name="message">The message to send</param>
|
||||
void SendMessageAsSelf(string message);
|
||||
|
||||
/// <summary>
|
||||
/// Displays a message on the UI given an author name and a message.
|
||||
/// </summary>
|
||||
/// <param name="author">Author name</param>
|
||||
/// <param name="message">Message content</param>
|
||||
/// <param name="font">font to use</param>
|
||||
void DisplayMessageOnSelf(string author, string message, string font = "Blue" );
|
||||
}
|
||||
}
|
45
Torch.API/Managers/IChatManagerServer.cs
Normal file
45
Torch.API/Managers/IChatManagerServer.cs
Normal file
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using VRage.Network;
|
||||
|
||||
namespace Torch.API.Managers
|
||||
{
|
||||
|
||||
/// <summary>
|
||||
/// Callback used to indicate the server has recieved a message to process.
|
||||
/// </summary>
|
||||
/// <param name="authorId">Steam ID of the user sending a message</param>
|
||||
/// <param name="msg">Message the user is attempting to send</param>
|
||||
/// <param name="consumed">If true, this event has been consumed and should be ignored</param>
|
||||
public delegate void DelMessageProcessing(TorchChatMessage msg, ref bool consumed);
|
||||
|
||||
public interface IChatManagerServer : IChatManagerClient
|
||||
{
|
||||
/// <summary>
|
||||
/// Event triggered when the server has recieved a message and should process it. <see cref="DelMessageProcessing"/>
|
||||
/// </summary>
|
||||
event DelMessageProcessing MessageProcessing;
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Sends a message with the given author and message to the given player, or all players by default.
|
||||
/// </summary>
|
||||
/// <param name="authorId">Author's steam ID</param>
|
||||
/// <param name="message">The message to send</param>
|
||||
/// <param name="targetSteamId">Player to send the message to, or everyone by default</param>
|
||||
void SendMessageAsOther(ulong authorId, string message, ulong targetSteamId = 0);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Sends a scripted message with the given author and message to the given player, or all players by default.
|
||||
/// </summary>
|
||||
/// <param name="author">Author name</param>
|
||||
/// <param name="message">The message to send</param>
|
||||
/// <param name="font">Font to use</param>
|
||||
/// <param name="targetSteamId">Player to send the message to, or everyone by default</param>
|
||||
void SendMessageAsOther(string author, string message, string font, ulong targetSteamId = 0);
|
||||
}
|
||||
}
|
@@ -16,7 +16,7 @@ namespace Torch.API.Managers
|
||||
/// <summary>
|
||||
/// API for multiplayer related functions.
|
||||
/// </summary>
|
||||
public interface IMultiplayerManager : IManager
|
||||
public interface IMultiplayerManagerBase : IManager
|
||||
{
|
||||
/// <summary>
|
||||
/// Fired when a player joins.
|
||||
@@ -27,27 +27,7 @@ namespace Torch.API.Managers
|
||||
/// Fired when a player disconnects.
|
||||
/// </summary>
|
||||
event Action<IPlayer> PlayerLeft;
|
||||
|
||||
/// <summary>
|
||||
/// Fired when a chat message is received.
|
||||
/// </summary>
|
||||
event MessageReceivedDel MessageReceived;
|
||||
|
||||
/// <summary>
|
||||
/// Send a chat message to all or one specific player.
|
||||
/// </summary>
|
||||
void SendMessage(string message, string author = "Server", long playerId = 0, string font = MyFontEnum.Blue);
|
||||
|
||||
/// <summary>
|
||||
/// Kicks the player from the game.
|
||||
/// </summary>
|
||||
void KickPlayer(ulong steamId);
|
||||
|
||||
/// <summary>
|
||||
/// Bans or unbans a player from the game.
|
||||
/// </summary>
|
||||
void BanPlayer(ulong steamId, bool banned = true);
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// Gets a player by their Steam64 ID or returns null if the player isn't found.
|
||||
/// </summary>
|
||||
@@ -57,5 +37,12 @@ namespace Torch.API.Managers
|
||||
/// Gets a player by their display name or returns null if the player isn't found.
|
||||
/// </summary>
|
||||
IMyPlayer GetPlayerByName(string name);
|
||||
|
||||
/// <summary>
|
||||
/// Gets the steam username of a member's steam ID
|
||||
/// </summary>
|
||||
/// <param name="steamId">steam ID</param>
|
||||
/// <returns>steam username</returns>
|
||||
string GetSteamUsername(ulong steamId);
|
||||
}
|
||||
}
|
12
Torch.API/Managers/IMultiplayerManagerClient.cs
Normal file
12
Torch.API/Managers/IMultiplayerManagerClient.cs
Normal file
@@ -0,0 +1,12 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Torch.API.Managers
|
||||
{
|
||||
public interface IMultiplayerManagerClient : IMultiplayerManagerBase
|
||||
{
|
||||
}
|
||||
}
|
21
Torch.API/Managers/IMultiplayerManagerServer.cs
Normal file
21
Torch.API/Managers/IMultiplayerManagerServer.cs
Normal file
@@ -0,0 +1,21 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace Torch.API.Managers
|
||||
{
|
||||
public interface IMultiplayerManagerServer : IMultiplayerManagerBase
|
||||
{
|
||||
/// <summary>
|
||||
/// Kicks the player from the game.
|
||||
/// </summary>
|
||||
void KickPlayer(ulong steamId);
|
||||
|
||||
/// <summary>
|
||||
/// Bans or unbans a player from the game.
|
||||
/// </summary>
|
||||
void BanPlayer(ulong steamId, bool banned = true);
|
||||
}
|
||||
}
|
@@ -18,6 +18,12 @@ namespace Torch.API.Managers
|
||||
/// Register a network handler.
|
||||
/// </summary>
|
||||
void RegisterNetworkHandler(INetworkHandler handler);
|
||||
|
||||
/// <summary>
|
||||
/// Unregister a network handler.
|
||||
/// </summary>
|
||||
/// <returns>true if the handler was unregistered, false if it wasn't registered to begin with</returns>
|
||||
bool UnregisterNetworkHandler(INetworkHandler handler);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
@@ -33,6 +39,7 @@ namespace Torch.API.Managers
|
||||
/// <summary>
|
||||
/// Processes a network message.
|
||||
/// </summary>
|
||||
/// <returns>true if the message should be discarded</returns>
|
||||
bool Handle(ulong remoteUserId, CallSite site, BitStream stream, object obj, MyPacket packet);
|
||||
}
|
||||
}
|
||||
|
@@ -164,11 +164,15 @@
|
||||
<Compile Include="ITorchConfig.cs" />
|
||||
<Compile Include="Managers\DependencyManagerExtensions.cs" />
|
||||
<Compile Include="Managers\DependencyProviderExtensions.cs" />
|
||||
<Compile Include="Managers\IChatManagerClient.cs" />
|
||||
<Compile Include="Managers\IChatManagerServer.cs" />
|
||||
<Compile Include="Managers\IDependencyManager.cs" />
|
||||
<Compile Include="Managers\IDependencyProvider.cs" />
|
||||
<Compile Include="Managers\IManager.cs" />
|
||||
<Compile Include="Managers\IMultiplayerManager.cs" />
|
||||
<Compile Include="Managers\IMultiplayerManagerClient.cs" />
|
||||
<Compile Include="Managers\IMultiplayerManagerBase.cs" />
|
||||
<Compile Include="IPlayer.cs" />
|
||||
<Compile Include="Managers\IMultiplayerManagerServer.cs" />
|
||||
<Compile Include="Managers\INetworkManager.cs" />
|
||||
<Compile Include="Managers\IPluginManager.cs" />
|
||||
<Compile Include="Plugins\ITorchPlugin.cs" />
|
||||
|
Reference in New Issue
Block a user