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
|
||||
{
|
||||
ClientNetworkManager networkManager;
|
||||
|
||||
public bool IsConnected { get { return networkManager.IsConnected; } }
|
||||
public Client()
|
||||
{
|
||||
networkManager = new ClientNetworkManager();
|
||||
|
@ -24,19 +26,15 @@ namespace ZoFo.GameCore
|
|||
List<IUpdateData> updateDatas = JsonSerializer.Deserialize<List<IUpdateData>>(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)
|
||||
{
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -39,7 +39,16 @@ public class SelectModeMenu : AbstractGUI
|
|||
singleButton.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);
|
||||
|
||||
string key = client.IsConnected.ToString();
|
||||
AppManager.Instance.debugHud.Set(key,"SinglePlayer");
|
||||
// ваш код здесь
|
||||
};
|
||||
Elements.Add(singleButton);
|
||||
|
@ -56,7 +65,12 @@ public class SelectModeMenu : AbstractGUI
|
|||
{
|
||||
AppManager.Instance.SetGUI(new SelectingServerGUI());
|
||||
// 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);
|
||||
|
|
|
@ -21,6 +21,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
|||
List<IUpdateData> updates = new List<IUpdateData>();
|
||||
public delegate void OnDataSent(string Data);
|
||||
public event OnDataSent GetDataSent; // event
|
||||
public bool IsConnected { get { return socket.Connected; } }
|
||||
|
||||
public ClientNetworkManager()
|
||||
{
|
||||
|
@ -64,8 +65,8 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
|||
listen.Start();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// создается одиночная комната к которой ты подключаешься
|
||||
/// <summary>
|
||||
/// создается одиночная комната к которой ты подключаешься
|
||||
/// </summary>
|
||||
public void JoinYourself() // single player
|
||||
{
|
||||
|
|
|
@ -29,7 +29,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
|||
|
||||
public ServerNetworkManager() { Init(); }
|
||||
|
||||
public void Init() //create Socket
|
||||
/// <summary>
|
||||
/// Initialize varibles and Sockets
|
||||
/// </summary>
|
||||
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<Socket>();
|
||||
updates = new List<IUpdateData>();
|
||||
managerThread = new Dictionary<Socket, Thread>();
|
||||
socket.Bind(endPoint);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// отправляет клиенту Data
|
||||
/// </summary>
|
||||
|
@ -50,6 +55,7 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
|||
item.SendAsync(databytes);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// добавляет в лист updates новую data
|
||||
/// </summary>
|
||||
|
@ -57,8 +63,12 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
|||
public void AddData(IUpdateData data)
|
||||
{
|
||||
updates.Add(data);
|
||||
}
|
||||
public void CloseConnection() //По сути коне игры и отключение игроков
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// По сути конец игры и отключение игроков
|
||||
/// </summary>
|
||||
public void CloseConnection()
|
||||
{
|
||||
foreach (var item in clients)
|
||||
{
|
||||
|
@ -79,6 +89,10 @@ namespace ZoFo.GameCore.GameManagers.NetworkManager
|
|||
clients.Clear();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Начинает работу сервера (Ожидает подключений)
|
||||
/// </summary>
|
||||
/// <param name="players"></param>
|
||||
public void Start(object players)
|
||||
{
|
||||
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;
|
||||
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)//начать слушать клиентов в самой игре активируют Ивент
|
||||
|
||||
/// <summary>
|
||||
/// начать слушать клиентов в самой игре активируют Ивент
|
||||
/// </summary>
|
||||
/// <param name="socket"></param>
|
||||
private void StartListening(object socket)
|
||||
{
|
||||
// obj to Socket
|
||||
Socket client = (Socket)socket;
|
||||
|
|
|
@ -30,13 +30,14 @@ namespace ZoFo.GameCore
|
|||
//ТУТ Switch case будет честное слово
|
||||
}
|
||||
/// <summary>
|
||||
/// Для красоты) Отдел Серверов
|
||||
/// Для красоты) Отдел Серверов
|
||||
/// </summary>
|
||||
/// <param name="data"></param>
|
||||
public void AddData(IUpdateData data)//добавляет в лист updates новую data
|
||||
{
|
||||
networkManager.AddData(data);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Создает комнату и запускает ожидание подключений
|
||||
/// </summary>
|
||||
|
@ -61,6 +62,10 @@ namespace ZoFo.GameCore
|
|||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Регистрирует игровой объект
|
||||
/// </summary>
|
||||
/// <param name="gameObject"></param>
|
||||
public void RegisterEntity(GameObject gameObject)
|
||||
{
|
||||
gameObjects.Add(gameObject);
|
||||
|
|
Loading…
Add table
Reference in a new issue