Language and chat mode api

This commit is contained in:
js6pak committed 2021-07-27 16:59:09 +02:00
1 parent a1dac9f8b7
commit 86c27402e2
12 files changed
+59 -15

No files matched your search

+10
View File
@@ -27,6 +27,16 @@ namespace Impostor.Api.Net
/// </remarks>
string Name { get; }
/// <summary>
/// Gets the language.
/// </summary>
Language Language { get; }
/// <summary>
/// Gets the quick chat mode.
/// </summary>
QuickChatModes ChatMode { get; }
/// <summary>
/// Gets the connection of the client.
/// </summary>
@@ -15,6 +15,7 @@ namespace Impostor.Plugins.Example
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IEventListener, GameEventListener>();
services.AddSingleton<IEventListener, ClientEventListener>();
services.AddSingleton<IEventListener, PlayerEventListener>();
services.AddSingleton<IEventListener, MeetingEventListener>();
services.AddSingleton<IEventListener, AnnouncementsListener>();
@@ -0,0 +1,22 @@
using Impostor.Api.Events;
using Impostor.Api.Events.Client;
using Microsoft.Extensions.Logging;
namespace Impostor.Plugins.Example.Handlers
{
public class ClientEventListener : IEventListener
{
private readonly ILogger<ClientEventListener> _logger;
public ClientEventListener(ILogger<ClientEventListener> logger)
{
_logger = logger;
}
[EventListener]
public void OnClientConnected(IClientConnectedEvent e)
{
_logger.LogInformation("Client {name} > connected (language: {language}, chat mode: {chatMode})", e.Client.Name, e.Client.Language, e.Client.ChatMode);
}
}
}
+2 -2
View File
@@ -24,8 +24,8 @@ namespace Impostor.Server.Net
private readonly GameManager _gameManager;
private readonly ICustomMessageManager<ICustomRootMessage> _customMessageManager;
public Client(ILogger<Client> logger, IOptions<AntiCheatConfig> antiCheatOptions, ClientManager clientManager, GameManager gameManager, ICustomMessageManager<ICustomRootMessage> customMessageManager, string name, int gameVersion, IHazelConnection connection)
: base(name, gameVersion, connection)
public Client(ILogger<Client> logger, IOptions<AntiCheatConfig> antiCheatOptions, ClientManager clientManager, GameManager gameManager, ICustomMessageManager<ICustomRootMessage> customMessageManager, string name, int gameVersion, Language language, QuickChatModes chatMode, IHazelConnection connection)
: base(name, gameVersion, language, chatMode, connection)
{
_logger = logger;
_antiCheatConfig = antiCheatOptions.Value;
+7 -1
View File
@@ -13,10 +13,12 @@ namespace Impostor.Server.Net
{
internal abstract class ClientBase : IClient
{
protected ClientBase(string name, int gameVersion, IHazelConnection connection)
protected ClientBase(string name, int gameVersion, Language language, QuickChatModes chatMode, IHazelConnection connection)
{
Name = name;
GameVersion = gameVersion;
Language = language;
ChatMode = chatMode;
Connection = connection;
Items = new ConcurrentDictionary<object, object>();
}
@@ -25,6 +27,10 @@ namespace Impostor.Server.Net
public string Name { get; }
public Language Language { get; }
public QuickChatModes ChatMode { get; }
public int GameVersion { get; }
public IHazelConnection Connection { get; }
@@ -1,4 +1,5 @@
using System;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
using Microsoft.Extensions.DependencyInjection;
@@ -14,9 +15,9 @@ namespace Impostor.Server.Net.Factories
_serviceProvider = serviceProvider;
}
public ClientBase Create(IHazelConnection connection, string name, int clientVersion)
public ClientBase Create(IHazelConnection connection, string name, int clientVersion, Language language, QuickChatModes chatMode)
{
var client = ActivatorUtilities.CreateInstance<TClient>(_serviceProvider, name, clientVersion, connection);
var client = ActivatorUtilities.CreateInstance<TClient>(_serviceProvider, name, clientVersion, language, chatMode, connection);
connection.Client = client;
return client;
}
@@ -1,9 +1,10 @@
using Impostor.Api.Net;
using Impostor.Api.Innersloth;
using Impostor.Api.Net;
namespace Impostor.Server.Net.Factories
{
internal interface IClientFactory
{
ClientBase Create(IHazelConnection connection, string name, int clientVersion);
ClientBase Create(IHazelConnection connection, string name, int clientVersion, Language language, QuickChatModes chatMode);
}
}
@@ -65,7 +65,7 @@ namespace Impostor.Server.Net.Manager
return clientId;
}
public async ValueTask RegisterConnectionAsync(IHazelConnection connection, string name, int clientVersion)
public async ValueTask RegisterConnectionAsync(IHazelConnection connection, string name, int clientVersion, Language language, QuickChatModes chatMode)
{
var versionCompare = CompareVersion(clientVersion);
if (versionCompare != VersionCompareResult.Compatible)
@@ -105,7 +105,7 @@ namespace Impostor.Server.Net.Manager
return;
}
var client = _clientFactory.Create(connection, name, clientVersion);
var client = _clientFactory.Create(connection, name, clientVersion, language, chatMode);
var id = NextId();
client.Id = id;
+2 -2
View File
@@ -62,14 +62,14 @@ namespace Impostor.Server.Net
private async ValueTask OnNewConnection(NewConnectionEventArgs e)
{
// Handshake.
HandshakeC2S.Deserialize(e.HandshakeData, out var clientVersion, out var name, out _, out _, out _);
HandshakeC2S.Deserialize(e.HandshakeData, out var clientVersion, out var name, out _, out var language, out var chatMode);
var connection = new HazelConnection(e.Connection, _connectionLogger);
await _eventManager.CallAsync(new ClientConnectionEvent(connection, e.HandshakeData));
// Register client
await _clientManager.RegisterConnectionAsync(connection, name, clientVersion);
await _clientManager.RegisterConnectionAsync(connection, name, clientVersion, language, chatMode);
}
}
}
@@ -22,11 +22,13 @@ namespace Impostor.Server.Net.Redirector
public ClientRedirector(
string name,
int gameVersion,
Language language,
QuickChatModes chatMode,
HazelConnection connection,
ClientManager clientManager,
INodeProvider nodeProvider,
INodeLocator nodeLocator)
: base(name, gameVersion, connection)
: base(name, gameVersion, language, chatMode, connection)
{
_clientManager = clientManager;
_nodeProvider = nodeProvider;
@@ -1,4 +1,5 @@
using System.Threading.Tasks;
using Impostor.Api.Innersloth;
using Impostor.Api.Net.Custom;
using Impostor.Api.Net.Messages;
using Impostor.Server.Config;
@@ -17,8 +18,8 @@ namespace Impostor.Server.Recorder
private bool _createdGame;
private bool _recordAfter;
public ClientRecorder(ILogger<Client> logger, IOptions<AntiCheatConfig> antiCheatOptions, ClientManager clientManager, ICustomMessageManager<ICustomRootMessage> customMessageManager, GameManager gameManager, string name, int gameVersion, HazelConnection connection, PacketRecorder recorder)
: base(logger, antiCheatOptions, clientManager, gameManager, customMessageManager, name, gameVersion, connection)
public ClientRecorder(ILogger<Client> logger, IOptions<AntiCheatConfig> antiCheatOptions, ClientManager clientManager, ICustomMessageManager<ICustomRootMessage> customMessageManager, GameManager gameManager, string name, int gameVersion, Language language, QuickChatModes chatMode, HazelConnection connection, PacketRecorder recorder)
: base(logger, antiCheatOptions, clientManager, gameManager, customMessageManager, name, gameVersion, language, chatMode, connection)
{
_recorder = recorder;
_isFirst = true;
+1 -1
View File
@@ -170,7 +170,7 @@ namespace Impostor.Tools.ServerReplay
// Create and register connection.
var connection = new MockHazelConnection(address);
await _clientManager.RegisterConnectionAsync(connection, name, gameVersion);
await _clientManager.RegisterConnectionAsync(connection, name, gameVersion, Language.English, QuickChatModes.FreeChatOrQuickChat);
// Store reference for ourselfs.
Connections.Add(clientId, connection);