From 9d9709441c8d7e6b4007da11a387ac81348de9c9 Mon Sep 17 00:00:00 2001 From: rawer470 Date: Fri, 16 Aug 2024 12:35:02 +0300 Subject: [PATCH 1/2] ReadyCreateServerGame --- ZoFo/GameCore/GUI/MainMenuGUI.cs | 4 ++-- ZoFo/GameCore/GUI/SelectModeMenu.cs | 8 +++++++- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/ZoFo/GameCore/GUI/MainMenuGUI.cs b/ZoFo/GameCore/GUI/MainMenuGUI.cs index 4683ddd..2c098ac 100644 --- a/ZoFo/GameCore/GUI/MainMenuGUI.cs +++ b/ZoFo/GameCore/GUI/MainMenuGUI.cs @@ -39,8 +39,8 @@ public class MainMenuGUI : AbstractGUI fontName = "Fonts\\Font" }; playButton.LeftButtonPressed += () => - { - AppManager.Instance.SetGUI(new SelectModeMenu()); + { + AppManager.Instance.SetGUI(new SelectModeMenu()); }; Elements.Add(playButton); Button optionButton = new Button(Manager) diff --git a/ZoFo/GameCore/GUI/SelectModeMenu.cs b/ZoFo/GameCore/GUI/SelectModeMenu.cs index 5f3262e..0918b5a 100644 --- a/ZoFo/GameCore/GUI/SelectModeMenu.cs +++ b/ZoFo/GameCore/GUI/SelectModeMenu.cs @@ -39,7 +39,13 @@ public class SelectModeMenu : AbstractGUI playButton.LeftButtonPressed += () => { // single - + Server server = new Server(); //Server Logic SinglePlayer + Client client = new Client(); + server.CreateRoom(1); + client.JoinYourself(); + AppManager.Instance.SetServer(server); + AppManager.Instance.SetClient(client); + AppManager.Instance.ChangeState(GameState.HostPlaying); // ваш код здесь }; Elements.Add(playButton); From 0ad40ac2d39ec9d733d1259c56f4add93a348712 Mon Sep 17 00:00:00 2001 From: rawer470 Date: Fri, 16 Aug 2024 13:04:54 +0300 Subject: [PATCH 2/2] UpdateComments2 --- ZoFo/GameCore/Client.cs | 6 ++-- ZoFo/GameCore/GUI/SelectModeMenu.cs | 10 +++++- .../NetworkManager/ClientNetworkManager.cs | 3 +- .../NetworkManager/ServerNetworkManager.cs | 36 +++++++++++++++---- ZoFo/GameCore/Server.cs | 7 +++- 5 files changed, 49 insertions(+), 13 deletions(-) diff --git a/ZoFo/GameCore/Client.cs b/ZoFo/GameCore/Client.cs index 49b1813..484e82a 100644 --- a/ZoFo/GameCore/Client.cs +++ b/ZoFo/GameCore/Client.cs @@ -13,6 +13,8 @@ namespace ZoFo.GameCore public class Client { ClientNetworkManager networkManager; + + public bool IsConnected { get { return networkManager.IsConnected; } } public Client() { networkManager = new ClientNetworkManager(); @@ -24,19 +26,15 @@ namespace ZoFo.GameCore List updateDatas = JsonSerializer.Deserialize>(data); // тут будет switch } - public void GameEndedUnexpectedly(){ } - public void JoinRoom(string ip) { networkManager.JoinRoom(ip); } - public void JoinYourself(){ networkManager.JoinYourself(); } internal void Update(GameTime gameTime) { } - internal void Draw(SpriteBatch spriteBatch) { } diff --git a/ZoFo/GameCore/GUI/SelectModeMenu.cs b/ZoFo/GameCore/GUI/SelectModeMenu.cs index 0918b5a..726a261 100644 --- a/ZoFo/GameCore/GUI/SelectModeMenu.cs +++ b/ZoFo/GameCore/GUI/SelectModeMenu.cs @@ -46,6 +46,9 @@ public class SelectModeMenu : AbstractGUI AppManager.Instance.SetServer(server); AppManager.Instance.SetClient(client); AppManager.Instance.ChangeState(GameState.HostPlaying); + + string key = client.IsConnected.ToString(); + AppManager.Instance.debugHud.Set(key,"SinglePlayer"); // ваш код здесь }; Elements.Add(playButton); @@ -61,7 +64,12 @@ public class SelectModeMenu : AbstractGUI optionButton.LeftButtonPressed += () => { // multi - + Server server = new Server(); //Server Logic SinglePlayer + Client client = new Client(); + server.CreateRoom(1); + client.JoinYourself(); + AppManager.Instance.SetServer(server); + AppManager.Instance.SetClient(client); // ваш код здесь }; Elements.Add(optionButton); diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs index a44eade..05b6ff6 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/ClientNetworkManager.cs @@ -21,6 +21,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager List updates = new List(); public delegate void OnDataSent(string Data); public event OnDataSent GetDataSent; // event + public bool IsConnected { get { return socket.Connected; } } public ClientNetworkManager() { @@ -65,7 +66,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager } /// - /// создается + /// создается одиночная комната /// public void JoinYourself() // single player { diff --git a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs index c092973..b4213e7 100644 --- a/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs +++ b/ZoFo/GameCore/GameManagers/NetworkManager/ServerNetworkManager.cs @@ -29,7 +29,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager public ServerNetworkManager() { Init(); } - public void Init() //create Socket + /// + /// Initialize varibles and Sockets + /// + private void Init() { endPoint = new IPEndPoint(ip, port); socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp); @@ -37,7 +40,9 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager clients = new List(); updates = new List(); managerThread = new Dictionary(); + socket.Bind(endPoint); } + /// /// отправляет клиенту Data /// @@ -50,6 +55,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager item.SendAsync(databytes); } } + /// /// добавляет в лист updates новую data /// @@ -57,8 +63,12 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager public void AddData(IUpdateData data) { updates.Add(data); - } - public void CloseConnection() //По сути коне игры и отключение игроков + } + + /// + /// По сути конец игры и отключение игроков + /// + public void CloseConnection() { foreach (var item in clients) { @@ -79,6 +89,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager clients.Clear(); } + /// + /// Начинает работу сервера (Ожидает подключений) + /// + /// public void Start(object players) { serverTheread = new Thread(StartWaitingForPlayers); @@ -86,10 +100,15 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager } //Потоки Клиентов - public void StartWaitingForPlayers(object players)//Слушает игроков, которые хотят подключиться + + /// + /// Слушает игроков, которые хотят подключиться + /// + /// + public void StartWaitingForPlayers(object players) { int playNumber = (int)players; - socket.Bind(endPoint); + socket.Listen(playNumber); for (int i = 0; i < playNumber; i++) { @@ -101,7 +120,12 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager } } - private void StartListening(object socket)//начать слушать клиентов в самой игре активируют Ивент + + /// + /// начать слушать клиентов в самой игре активируют Ивент + /// + /// + private void StartListening(object socket) { // obj to Socket Socket client = (Socket)socket; diff --git a/ZoFo/GameCore/Server.cs b/ZoFo/GameCore/Server.cs index 9faf5df..48ff924 100644 --- a/ZoFo/GameCore/Server.cs +++ b/ZoFo/GameCore/Server.cs @@ -30,13 +30,14 @@ namespace ZoFo.GameCore //ТУТ Switch case будет честное слово } /// - /// Для красоты) Отдел Серверов + /// Для красоты) Отдел Серверов /// /// public void AddData(IUpdateData data)//добавляет в лист updates новую data { networkManager.AddData(data); } + /// /// Создает комнату и запускает ожидание подключений /// @@ -61,6 +62,10 @@ namespace ZoFo.GameCore { } + /// + /// Регистрирует игровой объект + /// + /// public void RegisterEntity(GameObject gameObject) { gameObjects.Add(gameObject);