diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/Games/UsersManager.cs b/Playvoi.Server/Playvoi.Server/Playvoi.Server/Games/UsersManager.cs index f4c9873..dfc4bf1 100644 --- a/Playvoi.Server/Playvoi.Server/Playvoi.Server/Games/UsersManager.cs +++ b/Playvoi.Server/Playvoi.Server/Playvoi.Server/Games/UsersManager.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using LiteNetLib; using Playvoi.Server.Data.Interface; using Playvoi.Server.Data.Model; @@ -11,8 +12,36 @@ public class UsersManager public UsersManager(IUserRepository userRepository) { + _connections = new Dictionary(); _userRepository = userRepository; } + + public void AddConnection(NetPeer peer) + { + _connections.Add(peer.Id, new ServerConnection() + { + Peer = peer, + }); + } + public void Disconnect(int peerId) + { + var connection = GetConnection(peerId); + if (connection.User != null) + { + var userId = connection.User.Id; + _userRepository.SetOffline(userId); + + //Matchmaker Unregister + //gamemanger close game + } + _connections.Remove(peerId); + } + + public ServerConnection GetConnection(int peerId) + { + return _connections[peerId]; + } + public bool LoginOrRegister(int connectionId, string username, string password) { var dbUser = _userRepository.Get(username); diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/Infrastructure/Container.cs b/Playvoi.Server/Playvoi.Server/Playvoi.Server/Infrastructure/Container.cs index 24884a8..e769d9c 100644 --- a/Playvoi.Server/Playvoi.Server/Playvoi.Server/Infrastructure/Container.cs +++ b/Playvoi.Server/Playvoi.Server/Playvoi.Server/Infrastructure/Container.cs @@ -4,6 +4,7 @@ using Microsoft.Extensions.Logging; using Playvoi.Server.Data.Interface; using Playvoi.Server.Data.Repository; using Playvoi.Server.Extensions; +using Playvoi.Server.Games; using Playvoi.Server.Shared.Registry; namespace Playvoi.Server.Infrastructure; @@ -24,6 +25,7 @@ public static class Container services.AddSingleton(); services.AddSingleton(); services.AddSingleton(); + services.AddSingleton(); services.AddSingleton(); services.AddPacketHandlers(); } diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/NetworkServer.cs b/Playvoi.Server/Playvoi.Server/Playvoi.Server/NetworkServer.cs index 8cbd6e9..f220846 100644 --- a/Playvoi.Server/Playvoi.Server/Playvoi.Server/NetworkServer.cs +++ b/Playvoi.Server/Playvoi.Server/Playvoi.Server/NetworkServer.cs @@ -8,6 +8,7 @@ using _Network.Shared.Interface; using LiteNetLib; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using Playvoi.Server.Games; using Playvoi.Server.Shared; using Playvoi.Server.Shared.Interface; using Playvoi.Server.Shared.Registry; @@ -19,7 +20,7 @@ public class NetworkServer : INetEventListener private readonly ILogger _logger; private readonly IServiceProvider _serviceProvider; private NetManager _netManager; - private Dictionary _connections; + private UsersManager _usersManager; public NetworkServer(ILogger logger, IServiceProvider serviceProvider) { @@ -29,12 +30,12 @@ public class NetworkServer : INetEventListener public void Start() { - _connections = new Dictionary(); _netManager = new NetManager(this) { DisconnectTimeout = 10000 }; _netManager.Start(9050); + _usersManager = _serviceProvider.GetRequiredService(); Console.WriteLine("Server listening on port 9050"); } @@ -65,14 +66,16 @@ public class NetworkServer : INetEventListener public void OnPeerConnected(NetPeer peer) { - Console.WriteLine($"Client connected:{peer.Id}:{peer.Address}:{peer.Port}"); - _connections.Add(peer.Id, peer); + _logger.LogInformation($"{peer?.Id} connect to {peer.Address}"); + _usersManager.AddConnection(peer); } public void OnPeerDisconnected(NetPeer peer, DisconnectInfo disconnectInfo) { - Console.WriteLine($"Client disconnected:{peer.Id}:{peer.Address}:{peer.Port}"); - _connections.Remove(peer.Id); + var connection = _usersManager.GetConnection(peer.Id); + _netManager.DisconnectPeer(peer); + _usersManager.Disconnect(peer.Id); + _logger.LogInformation($"{connection?.User?.Id} disconnect from {peer.Address}"); } public void OnConnectionRequest(ConnectionRequest request) diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.dll b/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.dll index ba11cac..7ca8b54 100644 Binary files a/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.dll and b/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.dll differ diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.exe b/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.exe index bd87207..b60dfdf 100644 Binary files a/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.exe and b/Playvoi.Server/Playvoi.Server/Playvoi.Server/bin/Release/net9.0/Playvoi.Server.exe differ diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfo.cs b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfo.cs index 65e30e2..959b17d 100644 --- a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfo.cs +++ b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfo.cs @@ -13,7 +13,7 @@ using System.Reflection; [assembly: System.Reflection.AssemblyCompanyAttribute("Playvoi.Server")] [assembly: System.Reflection.AssemblyConfigurationAttribute("Release")] [assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")] -[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+b0197489b16432dc1deafec8d7ad46fc335f2e41")] +[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+e7703970b18467faa340642a873fe57df256dfa8")] [assembly: System.Reflection.AssemblyProductAttribute("Playvoi.Server")] [assembly: System.Reflection.AssemblyTitleAttribute("Playvoi.Server")] [assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")] diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfoInputs.cache b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfoInputs.cache index f86a794..4053ed2 100644 --- a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfoInputs.cache +++ b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.AssemblyInfoInputs.cache @@ -1 +1 @@ -57beb62731dfeffdc95d0f7c3f52acf0b72edd970c67dadd581310b517f12af2 +ef8056fde80eec98e3c67c1ecf688c0246764b60fad29197d2e428f1d5445736 diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.csproj.CoreCompileInputs.cache b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.csproj.CoreCompileInputs.cache index f5f40b4..94b5802 100644 --- a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.csproj.CoreCompileInputs.cache +++ b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -452610c42f1fac1e20e1510ff73f6e49a68de5b7968e9eef0a9411f71e75fe52 +c9422bab56cb8e21565dd835cfce88bec85d56c65db2af6f28efc3cb68e28b09 diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.dll b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.dll index ba11cac..7ca8b54 100644 Binary files a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.dll and b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/Playvoi.Server.dll differ diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/apphost.exe b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/apphost.exe index bd87207..b60dfdf 100644 Binary files a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/apphost.exe and b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/apphost.exe differ diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/ref/Playvoi.Server.dll b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/ref/Playvoi.Server.dll index 002a5fe..7baf9b3 100644 Binary files a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/ref/Playvoi.Server.dll and b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/ref/Playvoi.Server.dll differ diff --git a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/refint/Playvoi.Server.dll b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/refint/Playvoi.Server.dll index 002a5fe..7baf9b3 100644 Binary files a/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/refint/Playvoi.Server.dll and b/Playvoi.Server/Playvoi.Server/Playvoi.Server/obj/Release/net9.0/refint/Playvoi.Server.dll differ