Advertisement
Guest User

Client

a guest
Dec 1st, 2015
76
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 4.86 KB | None | 0 0
  1. using UnityEngine;
  2. using System.Collections;
  3. using UnityEngine.Networking;
  4. using System.IO;
  5. using System.Runtime.Serialization.Formatters.Binary;
  6. using System.Collections.Generic;
  7.  
  8. public class ClientScript : MonoBehaviour
  9. {
  10.  
  11.     // Use this for initialization
  12.     int channelID;
  13.     int socketID;
  14.     int socketPort = 8899;
  15.     int connectionID;
  16.     List<byte> _updateMessage = new List<byte>();
  17.     int _updateMessageLength = 21;
  18.     private static int player = 0;
  19.     int recConnectionId;
  20.     // Use this for initialization
  21.     void Start()
  22.     {
  23.         NetworkTransport.Init();
  24.         ConnectionConfig config = new ConnectionConfig();
  25.         channelID = config.AddChannel(QosType.Reliable);
  26.         int maxConnections = 5;
  27.         HostTopology topology = new HostTopology(config, maxConnections);
  28.         socketID = NetworkTransport.AddHost(topology, socketPort);
  29.         Debug.Log("Socket Open. Socket ID = " + socketID);
  30.         player = 0;
  31.     }
  32.  
  33.     public void Connect()
  34.     {
  35.         byte error;
  36.         connectionID = NetworkTransport.Connect(socketID, "149.153.102.43", socketPort, 0, out error);
  37.         Debug.Log("Sending my connect message ");
  38.         if (player == 0)
  39.         {
  40.             player = 2;
  41.         }
  42.     }
  43.  
  44.     // Update is called once per frame
  45.     void Update()
  46.     {
  47.         int recHostId;
  48.         int recChannelId;
  49.         byte[] recBuffer = new byte[1024];
  50.         int bufferSize = 1024;
  51.         int dataSize;
  52.         byte error;
  53.         NetworkEventType recNetworkEvent = NetworkTransport.Receive(out recHostId, out recConnectionId, out recChannelId,
  54.             recBuffer, bufferSize, out dataSize, out error);
  55.  
  56.         GameObject m_object;
  57.         if (player == 1)
  58.         {
  59.             m_object = GameObject.Find("Blue");
  60.             Vector3 pos = m_object.transform.position;
  61.             SendMyUpdate(pos.x, pos.y, new Vector2(0, 0), 0);
  62.         }
  63.         else if (player == 2)
  64.         {
  65.             m_object = GameObject.Find("Red");
  66.             Vector3 pos = m_object.transform.position;
  67.             SendMyUpdate(pos.x, pos.y, new Vector2(0, 0), 0);
  68.         }
  69.  
  70.  
  71.         switch (recNetworkEvent)
  72.         {
  73.             case NetworkEventType.Nothing:
  74.                 break;
  75.             case NetworkEventType.ConnectEvent:
  76.                 Debug.Log("incoming connection event received");
  77.                 if (player == 0)
  78.                 {
  79.                     player = 1;
  80.                 }
  81.                 break;
  82.             case NetworkEventType.DataEvent:
  83.                 recievedMessage(recBuffer);
  84.                 break;
  85.             case NetworkEventType.DisconnectEvent:
  86.                 Debug.Log("remote client event disconnected");
  87.                 break;
  88.         }
  89.     }
  90.  
  91.     public void recievedMessage(byte[] data)
  92.     {
  93.         //Let's figure out what type of message this is.
  94.         Debug.Log("Receiving Message ");
  95.         char messageType = (char)data[0];
  96.         if (messageType == 'U')
  97.         {
  98.             float posX = System.BitConverter.ToSingle(data, 1);
  99.             float posY = System.BitConverter.ToSingle(data, 5);
  100.             float velX = System.BitConverter.ToSingle(data, 9);
  101.             float velY = System.BitConverter.ToSingle(data, 13);
  102.             float rotZ = System.BitConverter.ToSingle(data, 17);
  103.             Debug.Log("Player 2" + " is at (" + posX + ", " + posY + ") traveling (" + velX + ", " + velY + ") rotation " + rotZ);
  104.  
  105.             GameObject m_object;
  106.             if (player == 1)
  107.             {
  108.                 m_object = GameObject.Find("Red");
  109.                 m_object.transform.position = new Vector3(posX, posY, 0);
  110.  
  111.             }
  112.             else if (player == 2)
  113.             {
  114.                 m_object = GameObject.Find("Blue");
  115.                 m_object.transform.position = new Vector3(posX, posY, 0);
  116.             }
  117.         }
  118.     }
  119.  
  120.     public void SendMyUpdate(float posX, float posY, Vector2 velocity, float rotZ)
  121.     {
  122.         byte error;
  123.         _updateMessage.Clear();
  124.         _updateMessage.Add((byte)'U');
  125.         _updateMessage.AddRange(System.BitConverter.GetBytes(posX));
  126.         _updateMessage.AddRange(System.BitConverter.GetBytes(posY));
  127.         _updateMessage.AddRange(System.BitConverter.GetBytes(velocity.x));
  128.         _updateMessage.AddRange(System.BitConverter.GetBytes(velocity.y));
  129.         _updateMessage.AddRange(System.BitConverter.GetBytes(rotZ));
  130.         byte[] messageToSend = _updateMessage.ToArray();
  131.         Debug.Log("Sending my update message  " + messageToSend + " to all players in the room , Length " +
  132.             messageToSend.Length);
  133.         //PlayGamesPlatform.Instance.RealTime.SendMessageToAll(false, messageToSend);
  134.         NetworkTransport.Send(socketID, connectionID, channelID, messageToSend, messageToSend.Length, out error);
  135.     }
  136.  
  137.     public static int getPlayer()
  138.     {
  139.         return player;
  140.     }
  141. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement