From f874938a13f71991401658ad61acc160caf3b197 Mon Sep 17 00:00:00 2001 From: rawer470 Date: Thu, 15 Aug 2024 19:21:30 +0300 Subject: [PATCH 1/2] AddComments --- .../NetworkManager/ServerNetworkManager.cs | 12 ++++++------ .../NetworkManager/Updates/IUpdateData.cs | 12 ++++++++++++ ZoFo/GameCore/Server.cs | 15 ++++++++------- 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs index 1e013a1..2a22c8c 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs @@ -26,7 +26,6 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager public event OnDataSend GetDataSend; // event Dictionary managerThread; - public void Init() //create Socket { endPoint = new IPEndPoint(ip, port); @@ -46,11 +45,11 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager { updates.Add(data); } - - public void CloseConnection() + public void CloseConnection() //По сути коне игры и отключение игроков { foreach (var item in clients) { + //Закрывает сокеты клиентов item.Shutdown(SocketShutdown.Both); item.Close(); } @@ -58,14 +57,16 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager { foreach (var socket in clients) { + //Закрывает потоки клиентов managerThread[socket].Interrupt(); } } + //очищает листы managerThread.Clear(); clients.Clear(); } - //Поток 2 + //Потоки Клиентов public void StartWaitingForPlayers(object players)//Слушает игроков, которые хотят подключиться { int playNumber = (int)players; @@ -81,7 +82,6 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager } } - private void StartListening(object socket)//начать слушать клиентов в самой игре активируют Ивент { // obj to Socket @@ -94,7 +94,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager GetDataSend(response); } Thread.Sleep(-1); - + } } } diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/IUpdateData.cs b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/IUpdateData.cs index edf1cd5..a90aaf4 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/Updates/IUpdateData.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/Updates/IUpdateData.cs @@ -3,10 +3,22 @@ using System; using System.Collections.Generic; using System.Linq; using System.Text; +using System.Text.Json.Serialization; using System.Threading.Tasks; +using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ClientToServer; +using ZoFo.GameCore.GameManagers.NetworkManager.Updates.ServerToClient; namespace ZoFo.GameCore.GameManagers.NetworkManager.Updates { + [JsonDerivedType(typeof(UpdateAnimation))] + [JsonDerivedType(typeof(UpdateEntityHealth))] + [JsonDerivedType(typeof(UpdateGameEnded))] + [JsonDerivedType(typeof(UpdateGameObjectCreated))] + [JsonDerivedType(typeof(UpdateLoot))] + [JsonDerivedType(typeof(UpdatePlayerParametrs))] + [JsonDerivedType(typeof(UpdatePosition))] + [JsonDerivedType(typeof(UpdateInput))] + [JsonDerivedType(typeof(UpdatePlayerExit))] public interface IUpdateData { public int IdEntity { get; set; } //Id объекта diff --git a/ZoFo/GameCore/Server.cs b/ZoFo/GameCore/Server.cs index 91cd151..7cb827b 100644 --- a/ZoFo/GameCore/Server.cs +++ b/ZoFo/GameCore/Server.cs @@ -15,27 +15,28 @@ namespace ZoFo.GameCore { private List gameObjects; private ServerNetworkManager networkManager; - // private List<> entity; //entity + private List entity; //entity public Server() { networkManager = new ServerNetworkManager(); networkManager.GetDataSend += OnDataSend; } - public void OnDataSend(string data) { List updateDatas = JsonSerializer.Deserialize>(data); //ТУТ Switch case будет честное слово } - public void CreateRoom(int players) { + public void CreateRoom(int players) //Создает комнату и запускает ожидание подключений + { networkManager.StartWaitingForPlayers(players); } - // public void StartGame() { } принудительный запуск - public void EndGame() { + + // public void StartGame() { } принудительный запуск + public void EndGame() //Добавляет UpdateGameEnded и отключает игроков + { UpdateGameEnded gameEnded = new UpdateGameEnded(); networkManager.AddData(gameEnded); + networkManager.CloseConnection(); } - - } } From 0593d919f1d4db9fe1b55d98b53635a8fc986802 Mon Sep 17 00:00:00 2001 From: rawer470 Date: Thu, 15 Aug 2024 21:38:21 +0300 Subject: [PATCH 2/2] AddDataInClassServer --- ZoFo/GameCore/Server.cs | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/ZoFo/GameCore/Server.cs b/ZoFo/GameCore/Server.cs index 7cb827b..8fdd99c 100644 --- a/ZoFo/GameCore/Server.cs +++ b/ZoFo/GameCore/Server.cs @@ -24,8 +24,17 @@ namespace ZoFo.GameCore public void OnDataSend(string data) { List updateDatas = JsonSerializer.Deserialize>(data); + //ТУТ Switch case будет честное слово } + /// + /// Для красоты) Отдел Серверов + /// + /// + public void AddData(IUpdateData data)//добавляет в лист updates новую data + { + networkManager.AddData(data); + } public void CreateRoom(int players) //Создает комнату и запускает ожидание подключений { networkManager.StartWaitingForPlayers(players);