WorkServerWithGUI2

This commit is contained in:
rawer470 2024-08-17 01:43:50 +03:00
parent a644d6c02a
commit b1f24ce81b
7 changed files with 18 additions and 9 deletions

View file

@ -47,7 +47,7 @@ namespace ZoFo.GameCore
{ {
networkManager.JoinRoom(ip,port); networkManager.JoinRoom(ip,port);
} }
public void JoinYourself() { networkManager.JoinYourself(); } public void JoinYourself(int port) { networkManager.JoinYourself(port); }
List<MapObject> mapObjects = new List<MapObject>(); List<MapObject> mapObjects = new List<MapObject>();

View file

@ -42,7 +42,7 @@ public class SelectModeMenu : AbstractGUI
Server server = new Server(); Server server = new Server();
Client client = new Client(); Client client = new Client();
server.CreateRoom(1); server.CreateRoom(1);
client.JoinYourself(); client.JoinYourself(server.MyIp.Port);
AppManager.Instance.SetServer(server); AppManager.Instance.SetServer(server);
AppManager.Instance.SetClient(client); AppManager.Instance.SetClient(client);
AppManager.Instance.ChangeState(GameState.HostPlaying); AppManager.Instance.ChangeState(GameState.HostPlaying);

View file

@ -84,7 +84,7 @@ public class SelectingServerGUI : AbstractGUI
Server server = new Server(); //Server Logic MultiPlayer Server server = new Server(); //Server Logic MultiPlayer
server.CreateRoom(5); server.CreateRoom(5);
AppManager.Instance.SetServer(server); AppManager.Instance.SetServer(server);
string key = server.MyIp; string key = server.MyIp.ToString();
AppManager.Instance.debugHud.Set(key, "MultiPlayer"); AppManager.Instance.debugHud.Set(key, "MultiPlayer");
// ваш код здесь // ваш код здесь
AppManager.Instance.SetGUI(new WaitingForPlayersGUI(true)); AppManager.Instance.SetGUI(new WaitingForPlayersGUI(true));

View file

@ -32,7 +32,7 @@ public class WaitingForPlayersGUI : AbstractGUI
Elements.Add(menuBackground); Elements.Add(menuBackground);
menuBackground.LoadTexture(AppManager.Instance.Content); menuBackground.LoadTexture(AppManager.Instance.Content);
// string pcIp = // string pcIp =
ip = new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 7, (int)(width / 4), (int)(height / 20)), text = AppManager.Instance.server.MyIp, fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts\\Font3" }; ip = new Label(Manager) { rectangle = new Rectangle(width / 2 - (int)(width / 8), height / 7, (int)(width / 4), (int)(height / 20)), text = AppManager.Instance.server.MyIp.ToString(), fontColor = Color.White, mainColor = Color.Transparent, scale = 0.9f, fontName = "Fonts\\Font3" };
Elements.Add(ip); Elements.Add(ip);
if (isHost) if (isHost)
{ {

View file

@ -16,12 +16,13 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
public class ClientNetworkManager public class ClientNetworkManager
{ {
private int port = 0; private int port = 0;
private EndPoint endPoint; private IPEndPoint endPoint;
private Socket socket; private Socket socket;
List<UpdateData> updates = new List<UpdateData>(); List<UpdateData> updates = new List<UpdateData>();
public delegate void OnDataSent(string Data); public delegate void OnDataSent(string Data);
public event OnDataSent GetDataSent; // event public event OnDataSent GetDataSent; // event
public bool IsConnected { get { return socket.Connected; } } public bool IsConnected { get { return socket.Connected; } }
public IPEndPoint InfoConnect => (IPEndPoint)socket.LocalEndPoint ?? endPoint;
public ClientNetworkManager() public ClientNetworkManager()
{ {
@ -74,9 +75,9 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
/// <summary> /// <summary>
/// создается одиночная комната к которой ты подключаешься /// создается одиночная комната к которой ты подключаешься
/// </summary> /// </summary>
public void JoinYourself() // single player public void JoinYourself(int port) // single player
{ {
endPoint = new IPEndPoint(IPAddress.Parse("127.0.0.1"), port); endPoint = new IPEndPoint(GetIp(), port);
socket.Connect(endPoint); socket.Connect(endPoint);
SendData(); SendData();
Thread listen = new Thread(StartListening); Thread listen = new Thread(StartListening);
@ -84,6 +85,13 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
listen.Start(); listen.Start();
} }
public static IPAddress GetIp()
{
string hostName = Dns.GetHostName(); // Retrive the Name of HOST
string myIP = Dns.GetHostByName(hostName).AddressList[1].ToString();// Get the IP
return IPAddress.Parse(myIP);
}
//поток 2 //поток 2
public void StartListening() public void StartListening()
{ {

View file

@ -26,7 +26,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
public event OnDataSend GetDataSend; // event public event OnDataSend GetDataSend; // event
Dictionary<Socket, Thread> managerThread; Dictionary<Socket, Thread> managerThread;
Thread serverTheread; Thread serverTheread;
public IPEndPoint InfoConnect => endPoint; public IPEndPoint InfoConnect => (IPEndPoint)socket.LocalEndPoint ?? endPoint;
public ServerNetworkManager() { Init(); } public ServerNetworkManager() { Init(); }

View file

@ -2,6 +2,7 @@
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net;
using System.Text; using System.Text;
using System.Text.Json; using System.Text.Json;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -19,7 +20,7 @@ namespace ZoFo.GameCore
{ {
private ServerNetworkManager networkManager; private ServerNetworkManager networkManager;
private int ticks = 0; private int ticks = 0;
public string MyIp { get { return networkManager.InfoConnect.ToString(); } } public IPEndPoint MyIp { get { return networkManager.InfoConnect; } }
public Server() public Server()
{ {
networkManager = new ServerNetworkManager(); networkManager = new ServerNetworkManager();