Merge branch 'ServerBranch' into Development
This commit is contained in:
commit
10052927ae
6 changed files with 59 additions and 17 deletions
|
@ -13,6 +13,8 @@ namespace ZoFo.GameCore
|
||||||
public class Client
|
public class Client
|
||||||
{
|
{
|
||||||
ClientNetworkManager networkManager;
|
ClientNetworkManager networkManager;
|
||||||
|
|
||||||
|
public bool IsConnected { get { return networkManager.IsConnected; } }
|
||||||
public Client()
|
public Client()
|
||||||
{
|
{
|
||||||
networkManager = new ClientNetworkManager();
|
networkManager = new ClientNetworkManager();
|
||||||
|
@ -24,19 +26,15 @@ namespace ZoFo.GameCore
|
||||||
List<IUpdateData> updateDatas = JsonSerializer.Deserialize<List<IUpdateData>>(data);
|
List<IUpdateData> updateDatas = JsonSerializer.Deserialize<List<IUpdateData>>(data);
|
||||||
// тут будет switch
|
// тут будет switch
|
||||||
}
|
}
|
||||||
|
|
||||||
public void GameEndedUnexpectedly(){ }
|
public void GameEndedUnexpectedly(){ }
|
||||||
|
|
||||||
public void JoinRoom(string ip)
|
public void JoinRoom(string ip)
|
||||||
{
|
{
|
||||||
networkManager.JoinRoom(ip);
|
networkManager.JoinRoom(ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void JoinYourself(){ networkManager.JoinYourself(); }
|
public void JoinYourself(){ networkManager.JoinYourself(); }
|
||||||
internal void Update(GameTime gameTime)
|
internal void Update(GameTime gameTime)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
internal void Draw(SpriteBatch spriteBatch)
|
internal void Draw(SpriteBatch spriteBatch)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,8 +39,8 @@ public class MainMenuGUI : AbstractGUI
|
||||||
fontName = "Fonts\\Font"
|
fontName = "Fonts\\Font"
|
||||||
};
|
};
|
||||||
playButton.LeftButtonPressed += () =>
|
playButton.LeftButtonPressed += () =>
|
||||||
{
|
{
|
||||||
AppManager.Instance.SetGUI(new SelectModeMenu());
|
AppManager.Instance.SetGUI(new SelectModeMenu());
|
||||||
};
|
};
|
||||||
Elements.Add(playButton);
|
Elements.Add(playButton);
|
||||||
Button optionButton = new Button(Manager)
|
Button optionButton = new Button(Manager)
|
||||||
|
|
|
@ -39,7 +39,16 @@ public class SelectModeMenu : AbstractGUI
|
||||||
singleButton.LeftButtonPressed += () =>
|
singleButton.LeftButtonPressed += () =>
|
||||||
{
|
{
|
||||||
// single
|
// 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);
|
||||||
|
|
||||||
|
string key = client.IsConnected.ToString();
|
||||||
|
AppManager.Instance.debugHud.Set(key,"SinglePlayer");
|
||||||
// ваш код здесь
|
// ваш код здесь
|
||||||
};
|
};
|
||||||
Elements.Add(singleButton);
|
Elements.Add(singleButton);
|
||||||
|
@ -56,7 +65,12 @@ public class SelectModeMenu : AbstractGUI
|
||||||
{
|
{
|
||||||
AppManager.Instance.SetGUI(new SelectingServerGUI());
|
AppManager.Instance.SetGUI(new SelectingServerGUI());
|
||||||
// multi
|
// 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);
|
Elements.Add(optionButton);
|
||||||
|
|
|
@ -21,6 +21,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
List<IUpdateData> updates = new List<IUpdateData>();
|
List<IUpdateData> updates = new List<IUpdateData>();
|
||||||
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 ClientNetworkManager()
|
public ClientNetworkManager()
|
||||||
{
|
{
|
||||||
|
@ -64,8 +65,8 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
listen.Start();
|
listen.Start();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// создается одиночная комната к которой ты подключаешься
|
/// создается одиночная комната к которой ты подключаешься
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public void JoinYourself() // single player
|
public void JoinYourself() // single player
|
||||||
{
|
{
|
||||||
|
|
|
@ -29,7 +29,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
|
|
||||||
public ServerNetworkManager() { Init(); }
|
public ServerNetworkManager() { Init(); }
|
||||||
|
|
||||||
public void Init() //create Socket
|
/// <summary>
|
||||||
|
/// Initialize varibles and Sockets
|
||||||
|
/// </summary>
|
||||||
|
private void Init()
|
||||||
{
|
{
|
||||||
endPoint = new IPEndPoint(ip, port);
|
endPoint = new IPEndPoint(ip, port);
|
||||||
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
|
||||||
|
@ -37,7 +40,9 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
clients = new List<Socket>();
|
clients = new List<Socket>();
|
||||||
updates = new List<IUpdateData>();
|
updates = new List<IUpdateData>();
|
||||||
managerThread = new Dictionary<Socket, Thread>();
|
managerThread = new Dictionary<Socket, Thread>();
|
||||||
|
socket.Bind(endPoint);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// отправляет клиенту Data
|
/// отправляет клиенту Data
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -50,6 +55,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
item.SendAsync(databytes);
|
item.SendAsync(databytes);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// добавляет в лист updates новую data
|
/// добавляет в лист updates новую data
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -57,8 +63,12 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
public void AddData(IUpdateData data)
|
public void AddData(IUpdateData data)
|
||||||
{
|
{
|
||||||
updates.Add(data);
|
updates.Add(data);
|
||||||
}
|
}
|
||||||
public void CloseConnection() //По сути коне игры и отключение игроков
|
|
||||||
|
/// <summary>
|
||||||
|
/// По сути конец игры и отключение игроков
|
||||||
|
/// </summary>
|
||||||
|
public void CloseConnection()
|
||||||
{
|
{
|
||||||
foreach (var item in clients)
|
foreach (var item in clients)
|
||||||
{
|
{
|
||||||
|
@ -79,6 +89,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
clients.Clear();
|
clients.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Начинает работу сервера (Ожидает подключений)
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="players"></param>
|
||||||
public void Start(object players)
|
public void Start(object players)
|
||||||
{
|
{
|
||||||
serverTheread = new Thread(StartWaitingForPlayers);
|
serverTheread = new Thread(StartWaitingForPlayers);
|
||||||
|
@ -86,10 +100,15 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
}
|
}
|
||||||
|
|
||||||
//Потоки Клиентов
|
//Потоки Клиентов
|
||||||
public void StartWaitingForPlayers(object players)//Слушает игроков, которые хотят подключиться
|
|
||||||
|
/// <summary>
|
||||||
|
/// Слушает игроков, которые хотят подключиться
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="players"></param>
|
||||||
|
public void StartWaitingForPlayers(object players)
|
||||||
{
|
{
|
||||||
int playNumber = (int)players;
|
int playNumber = (int)players;
|
||||||
socket.Bind(endPoint);
|
|
||||||
socket.Listen(playNumber);
|
socket.Listen(playNumber);
|
||||||
for (int i = 0; i < playNumber; i++)
|
for (int i = 0; i < playNumber; i++)
|
||||||
{
|
{
|
||||||
|
@ -101,7 +120,12 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
private void StartListening(object socket)//начать слушать клиентов в самой игре активируют Ивент
|
|
||||||
|
/// <summary>
|
||||||
|
/// начать слушать клиентов в самой игре активируют Ивент
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="socket"></param>
|
||||||
|
private void StartListening(object socket)
|
||||||
{
|
{
|
||||||
// obj to Socket
|
// obj to Socket
|
||||||
Socket client = (Socket)socket;
|
Socket client = (Socket)socket;
|
||||||
|
|
|
@ -30,13 +30,14 @@ namespace ZoFo.GameCore
|
||||||
//ТУТ Switch case будет честное слово
|
//ТУТ Switch case будет честное слово
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Для красоты) Отдел Серверов
|
/// Для красоты) Отдел Серверов
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="data"></param>
|
/// <param name="data"></param>
|
||||||
public void AddData(IUpdateData data)//добавляет в лист updates новую data
|
public void AddData(IUpdateData data)//добавляет в лист updates новую data
|
||||||
{
|
{
|
||||||
networkManager.AddData(data);
|
networkManager.AddData(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Создает комнату и запускает ожидание подключений
|
/// Создает комнату и запускает ожидание подключений
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -61,6 +62,10 @@ namespace ZoFo.GameCore
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Регистрирует игровой объект
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="gameObject"></param>
|
||||||
public void RegisterEntity(GameObject gameObject)
|
public void RegisterEntity(GameObject gameObject)
|
||||||
{
|
{
|
||||||
gameObjects.Add(gameObject);
|
gameObjects.Add(gameObject);
|
||||||
|
|
Loading…
Add table
Reference in a new issue