public ClientBase Create(IHazelConnection connection, string name, int clientVersion) { var client = ActivatorUtilities.CreateInstance <TClient>(_serviceProvider, name, connection); connection.Client = client; return(client); }
protected ClientBase(string name, int gameVersion, IHazelConnection connection) { Name = name; GameVersion = gameVersion; Connection = connection; Items = new ConcurrentDictionary <object, object>(); }
public static ReactorClientInfo?GetReactor(this IHazelConnection connection) { if (Table.TryGetValue(connection, out var clientInfo)) { return(clientInfo); } return(null); }
protected ClientBase(string name, IHazelConnection connection, ISet <Mod> mods) { Name = name; Connection = connection; Mods = mods; Items = new ConcurrentDictionary <object, object>(); ModIdMap = new Dictionary <int, string>(); var i = -1; foreach (var mod in mods.OrderBy(x => x.Id)) { if (mod.Side == PluginSide.Both) { ModIdMap[i--] = mod.Id; } } }
public async ValueTask RegisterConnectionAsync(IHazelConnection connection, string name, int clientVersion, ISet <Mod>?mods) { if (!SupportedVersions.Contains(clientVersion)) { using var packet = MessageWriter.Get(MessageType.Reliable); Message01JoinGameS2C.SerializeError(packet, false, DisconnectReason.IncorrectVersion); await connection.SendAsync(packet); return; } if (name.Length > 10) { using var packet = MessageWriter.Get(MessageType.Reliable); Message01JoinGameS2C.SerializeError(packet, false, DisconnectReason.Custom, DisconnectMessages.UsernameLength); await connection.SendAsync(packet); return; } if (string.IsNullOrWhiteSpace(name) || !name.All(TextBox.IsCharAllowed)) { using var packet = MessageWriter.Get(MessageType.Reliable); Message01JoinGameS2C.SerializeError(packet, false, DisconnectReason.Custom, DisconnectMessages.UsernameIllegalCharacters); await connection.SendAsync(packet); return; } var client = _clientFactory.Create(connection, name, clientVersion, mods ?? new HashSet <Mod>(0)); var id = NextId(); client.Id = id; _logger.LogTrace("Client connected."); _clients.TryAdd(id, client); using var writer = MessageWriter.Get(MessageType.Reliable); ModdedHandshakeS2C.Serialize(writer, ServerBrand); await connection.SendAsync(writer); }
public async ValueTask RegisterConnectionAsync(IHazelConnection connection, string name, int clientVersion) { if (!SupportedVersions.Contains(clientVersion)) { using var packet = MessageWriter.Get(MessageType.Reliable); Message01JoinGameS2C.SerializeError(packet, false, DisconnectReason.IncorrectVersion); await connection.SendAsync(packet); return; } if (name.Length > 10) { using var packet = MessageWriter.Get(MessageType.Reliable); Message01JoinGameS2C.SerializeError(packet, false, DisconnectReason.Custom, DisconnectMessages.UsernameLength); await connection.SendAsync(packet); return; } if (string.IsNullOrWhiteSpace(name) || !name.All(TextBox.IsCharAllowed)) { using var packet = MessageWriter.Get(MessageType.Reliable); Message01JoinGameS2C.SerializeError(packet, false, DisconnectReason.Custom, DisconnectMessages.UsernameIllegalCharacters); await connection.SendAsync(packet); return; } var client = _clientFactory.Create(connection, name, clientVersion); int id = NextId(); client.Id = id; _logger.LogTrace("Client connected."); _clients.TryAdd(id, client); await _eventManager.CallAsync(new ClientConnectedEvent(connection, client)); }
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) { _logger = logger; _antiCheatConfig = antiCheatOptions.Value; _clientManager = clientManager; _gameManager = gameManager; _customMessageManager = customMessageManager; }
public ClientConnectedEvent(IHazelConnection connection, IClient client) { Connection = connection; Client = client; }
public Client(ILogger <Client> logger, IOptions <AntiCheatConfig> antiCheatOptions, ClientManager clientManager, GameManager gameManager, string name, IHazelConnection connection, ISet <Mod> mods) : base(name, connection, mods) { _logger = logger; _antiCheatConfig = antiCheatOptions.Value; _clientManager = clientManager; _gameManager = gameManager; }
public ClientConnectionEvent(IHazelConnection connection, IMessageReader handshakeData) { Connection = connection; HandshakeData = handshakeData; }
internal static void SetReactor(this IHazelConnection connection, ReactorClientInfo clientInfo) { Table.AddOrUpdate(connection, clientInfo); }