Merge pull request #11 from progtime-net/ClientServerManager

Client server manager
This commit is contained in:
SergoDobro 2024-08-16 01:29:22 +03:00 committed by GitHub
commit 1718de9412
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 37 additions and 14 deletions

View file

@ -26,7 +26,6 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
public event OnDataSend GetDataSend; // event
Dictionary<Socket, Thread> 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);
}
}
}

View file

@ -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 объекта

View file

@ -16,27 +16,38 @@ namespace ZoFo.GameCore
{
private List<GameObject> gameObjects;
private ServerNetworkManager networkManager;
// private List<> entity; //entity
private List<Entity> entity; //entity
public Server()
{
networkManager = new ServerNetworkManager();
networkManager.GetDataSend += OnDataSend;
}
public void OnDataSend(string data)
{
List<IUpdateData> updateDatas = JsonSerializer.Deserialize<List<IUpdateData>>(data);
//ТУТ Switch case будет честное слово
}
public void CreateRoom(int players) {
/// <summary>
/// Для красоты) Отдел Серверов
/// </summary>
/// <param name="data"></param>
public void AddData(IUpdateData data)//добавляет в лист updates новую data
{
networkManager.AddData(data);
}
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();
}
internal void Update(GameTime gameTime)
{
}
@ -44,6 +55,6 @@ namespace ZoFo.GameCore
public void RegisterEntity(GameObject gameObject)
{
gameObjects.Add(gameObject);
}
}
}
}