Example #1
0
        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;
            }
        }
Example #2
0
 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);
        }
Example #4
0
    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;
        }
    }
Example #5
0
	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);
        }
Example #7
0
        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;
            }
        }
Example #8
0
        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);
            }
        }
Example #9
0
        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);
            }
        }
Example #10
0
 private static void Add(NetworkData t, NetworkCode code)
 {
     codeToType.Add(code, t);
 }
 public static bool IsInternal(NetworkCode code)
 {
     return(code.isInternal);
 }
Example #12
0
 protected void AddCode(NetworkCode c)
 {
     AddInt((int)c);
 }
Example #13
0
 public NetworkData(int packetSize, NetworkCode code)
 {
     this.packetSize = packetSize;
     this.code       = code;
 }
Example #14
0
 public void ReceiveNetworkData(NetworkCode opcode, NSDictionary payload)
 {
 }
Example #15
0
 public override void ReceiveNetworkData(NetworkCode opcode, NSDictionary payload)
 {
     receiver?.ReceiveNetworkData(opcode, payload);
 }