private void SelectOperation(NetworkCode code, byte[] data) { switch (code) { case NetworkCode.SendName: byte[] stringData = new byte[data.Length - sizeof(int)]; Array.Copy(data, sizeof(int), stringData, 0, data.Length - sizeof(int)); string name = Encoding.UTF8.GetString(stringData); //MessageBox.Show("ClientName = " + name); MultiplayerGameController.Instance.CreatePlayer(1, name, "O", false); if (ConnectToServerComplete != null) { ConnectToServerComplete(name, ((IPEndPoint)client.RemoteEndPoint).Address.ToString(), ((IPEndPoint)client.RemoteEndPoint).Port.ToString()); } break; case NetworkCode.EnableLine: byte[] buffer = new byte[data.Length - sizeof(int)]; Array.Copy(data, sizeof(int), buffer, 0, data.Length - sizeof(int)); int[] backData = new int[buffer.Length / sizeof(int)]; Buffer.BlockCopy(buffer, 0, backData, 0, buffer.Length); Vector2 pos = new Vector2(backData[0], backData[1]); LogicLine.Positioning positioning = (LogicLine.Positioning)backData[2]; int nextTurn = backData[3]; //MessageBox.Show(pos + "\n" + positioning); OnLineEnable(pos, positioning, nextTurn); break; } }
public static NetworkData GetT(NetworkCode i) { if (codeToType.ContainsKey(i)) { return(codeToType[i]); } return(null); }
protected static int ReadCode(byte[] bytes, int startIndex, out NetworkCode val) { int v; startIndex = ReadInt(bytes, startIndex, out v); val = (NetworkCode)v; return(startIndex); }
public static void SendLobbyData(NetworkCode code) { // Construct json packet List <Pair <string, string> > packetData = new List <Pair <string, string> >(); if (code != NetworkCode.PlayerJoinedLobby) { packetData.Add(new Pair <string, string>(NetworkKeyString.PlayerID, GameData.MyPlayer.PlayerID.ToString())); } switch (code) { case NetworkCode.TeamChangeRequest: packetData.Add(new Pair <string, string>(NetworkKeyString.TeamID, GameData.MyPlayer.TeamID.ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.TeamChangeRequest, packetData, Protocol.NA)); break; case NetworkCode.ClassChangeRequest: packetData.Add(new Pair <string, string>(NetworkKeyString.ClassID, ((int)GameData.MyPlayer.ClassType).ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.ClassChangeRequest, packetData, Protocol.NA)); break; case NetworkCode.ReadyRequest: packetData.Add(new Pair <string, string>(NetworkKeyString.Ready, GameData.MyPlayer.Ready ? "1" : "0")); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.ReadyRequest, packetData, Protocol.NA)); break; case NetworkCode.PlayerJoinedLobby: packetData.Add(new Pair <string, string>(NetworkKeyString.UserName, "\"" + GameData.MyPlayer.Username + "\"")); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.PlayerJoinedLobby, packetData, Protocol.NA)); break; case NetworkCode.PlayerLeftLobby: SendingPacket = NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.PlayerLeftLobby, packetData, Protocol.NA); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.PlayerLeftLobby, packetData, Protocol.NA)); break; case NetworkCode.GameStart: SendingPacket = NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.GameStart, packetData, Protocol.NA); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.GameStart, packetData, Protocol.NA)); break; // NOTE:: Send packet indicating the team that slected the aman case NetworkCode.AmanSelection: packetData.Add(new Pair <string, string>(NetworkKeyString.TeamID, GameData.MyPlayer.TeamID.ToString())); packetData.Add(new Pair <string, string>(NetworkKeyString.AmanID, GameData.AllyKingID.ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.AmanSelection, packetData, Protocol.NA)); break; case NetworkCode.ThemeSelection: packetData.Add(new Pair <string, string>(NetworkKeyString.Theme, ((int)GameData.CurrentTheme).ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.ThemeSelection, packetData, Protocol.NA)); break; } }
public static void SendLobbyData(NetworkCode code) { // Construct json packet List<Pair<string, string>> packetData = new List<Pair<string, string>>(); if(code != NetworkCode.PlayerJoinedLobby) packetData.Add (new Pair<string, string>(NetworkKeyString.PlayerID, GameData.MyPlayer.PlayerID.ToString())); switch(code) { case NetworkCode.TeamChangeRequest: packetData.Add(new Pair<string, string>(NetworkKeyString.TeamID, GameData.MyPlayer.TeamID.ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.TeamChangeRequest, packetData, Protocol.NA)); break; case NetworkCode.ClassChangeRequest: packetData.Add(new Pair<string, string>(NetworkKeyString.ClassID, ((int)GameData.MyPlayer.ClassType).ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.ClassChangeRequest, packetData, Protocol.NA)); break; case NetworkCode.ReadyRequest: packetData.Add(new Pair<string, string>(NetworkKeyString.Ready, GameData.MyPlayer.Ready ? "1" : "0")); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.ReadyRequest, packetData, Protocol.NA)); break; case NetworkCode.PlayerJoinedLobby: packetData.Add(new Pair<string, string>(NetworkKeyString.UserName, "\"" + GameData.MyPlayer.Username + "\"")); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.PlayerJoinedLobby, packetData, Protocol.NA)); break; case NetworkCode.PlayerLeftLobby: SendingPacket = NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.PlayerLeftLobby, packetData, Protocol.NA); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.PlayerLeftLobby, packetData, Protocol.NA)); break; case NetworkCode.GameStart: SendingPacket = NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.GameStart, packetData, Protocol.NA); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.GameStart, packetData, Protocol.NA)); break; // NOTE:: Send packet indicating the team that slected the aman case NetworkCode.AmanSelection: packetData.Add(new Pair<string, string>(NetworkKeyString.TeamID, GameData.MyPlayer.TeamID.ToString())); packetData.Add(new Pair<string, string>(NetworkKeyString.AmanID, GameData.AllyKingID.ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.AmanSelection, packetData, Protocol.NA)); break; case NetworkCode.ThemeSelection: packetData.Add(new Pair<string, string>(NetworkKeyString.Theme, ((int)GameData.CurrentTheme).ToString())); Send(NetworkingManager.send_next_packet(DataType.Lobby, (int)NetworkCode.ThemeSelection, packetData, Protocol.NA)); break; } }
public static NetworkData Parse(byte[] data) { NetworkCode code = (NetworkCode)BitConverter.ToInt32(data, 4); NetworkData nd = null; byte[] d = new byte[data.Length - 8]; Buffer.BlockCopy(data, 8, d, 0, data.Length - 8); nd = NetworkDataTypes.GetT(code)?.ParseData(d); if (nd is null) { Console.WriteLine($"Uncategorized net code {code}"); } return(nd); }
private void SelectOperation(NetworkCode code, byte[] data) { byte[] buffer; int[] backData; switch (code) { case NetworkCode.SendName: byte[] stringData = new byte[data.Length - sizeof(int)]; Array.Copy(data, sizeof(int), stringData, 0, data.Length - sizeof(int)); string name = Encoding.UTF8.GetString(stringData); //MessageBox.Show("ServerName = " + name); MultiplayerGameController.Instance.CreatePlayer(0, name, "X", false); if (ServerCreateComplete != null) { ServerCreateComplete(name, serverAddress.ToString(), port.ToString()); } SendUsername(MultiplayerGameController.Instance.CurrentPlayer.Name); if (ConnectToServerComplete != null) { ConnectToServerComplete(MultiplayerGameController.Instance.CurrentPlayer.Name, ((IPEndPoint)server.LocalEndPoint).Address.ToString(), ((IPEndPoint)server.LocalEndPoint).Port.ToString()); } break; case NetworkCode.StartGame: buffer = new byte[data.Length - sizeof(int)]; Array.Copy(data, sizeof(int), buffer, 0, data.Length - sizeof(int)); backData = new int[buffer.Length / sizeof(int)]; Buffer.BlockCopy(buffer, 0, backData, 0, buffer.Length); int fieldSize = backData[0]; //MessageBox.Show(fieldSize.ToString()); OnStartGame(fieldSize); break; case NetworkCode.EnableLine: buffer = new byte[data.Length - sizeof(int)]; Array.Copy(data, sizeof(int), buffer, 0, data.Length - sizeof(int)); backData = new int[buffer.Length / sizeof(int)]; Buffer.BlockCopy(buffer, 0, backData, 0, buffer.Length); Vector2 pos = new Vector2(backData[0], backData[1]); var positioning = (LogicLine.Positioning)backData[2]; int nextTurn = backData[3]; //MessageBox.Show(pos + "\n" + positioning); OnLineEnable(pos, positioning, nextTurn); break; } }
private void ReceiveCallback(IAsyncResult ar) { try { // Retrieve the state object and the client socket // from the asynchronous state object. StateObject state = (StateObject)ar.AsyncState; server = state.workSocket; // Read data from the remote device. int bytesRead = server.EndReceive(ar); //int bytesRead = netStream.EndRead(ar); NetworkCode code = (NetworkCode)BitConverter.ToInt32(state.buffer, 0); byte[] data = new byte[bytesRead]; Array.Copy(state.buffer, 0, data, 0, bytesRead); SelectOperation(code, data); if (bytesRead > 0) { // There might be more data, so store the data received so far. //state.sb.Append(Encoding.UTF8.GetString(state.buffer, 0, bytesRead)); // Get the rest of the data. server.BeginReceive(state.buffer, 0, StateObject.bufferSize, 0, ReceiveCallback, state); } else { // All the data has arrived; put it in response. if (state.sb.Length > 1) { response = state.sb.ToString(); } // Signal that all bytes have been received. //receiveDone.Set(); } //client.BeginReceive(state.buffer, 0, StateObject.bufferSize, 0, ReceiveCallback, state); //receiveDone.WaitOne(); } catch (Exception e) { if (ClientDisconnect != null) { ClientDisconnect(); } MessageBox.Show(e.Message); } }
private void ReadCallback(IAsyncResult ar) { try { string content = String.Empty; // Retrieve the state object and the handler socket // from the asynchronous state object. StateObject state = (StateObject)ar.AsyncState; Socket handler = state.workSocket; //Read data from the client socket int bytesRead = handler.EndReceive(ar); NetworkCode code = (NetworkCode)BitConverter.ToInt32(state.buffer, 0); byte[] data = new byte[bytesRead]; Array.Copy(state.buffer, 0, data, 0, bytesRead); SelectOperation(code, data); if (bytesRead > 0) { // There might be more data, so store the data received so far. //state.sb.Append(Encoding.UTF8.GetString(state.buffer, 0, bytesRead)); // Check for end-of-file tag. If it is not there, read // more data. // Not all data received. Get more. handler.BeginReceive(state.buffer, 0, StateObject.bufferSize, 0, ReadCallback, state); } } catch (Exception ex) { if (ClientDisconnect != null) { ClientDisconnect(); } handler.BeginAccept(AcceptCallback, handler); MessageBox.Show("In ReadCallback\n" + ex.Message); } }
private static void Add(NetworkData t, NetworkCode code) { codeToType.Add(code, t); }
public static bool IsInternal(NetworkCode code) { return(code.isInternal); }
protected void AddCode(NetworkCode c) { AddInt((int)c); }
public NetworkData(int packetSize, NetworkCode code) { this.packetSize = packetSize; this.code = code; }
public void ReceiveNetworkData(NetworkCode opcode, NSDictionary payload) { }
public override void ReceiveNetworkData(NetworkCode opcode, NSDictionary payload) { receiver?.ReceiveNetworkData(opcode, payload); }