Beispiel #1
0
    private void Start()
    {
        _pp.initStreams(client);

        _cubesById = new Dictionary <int, GameObject>();

        buf = new Buffer();
        // data de login? ip? name?
        _pp.SubscribeToTopic(Packet.Logined, (message, order) => {
            Debug.Log("LOGINNEEEEDDDD");
            clientID             = int.Parse(message);
            GameObject newPlayer = Instantiate(playerPrefab);
            newPlayer.name       = "CualquierCosa";
            newPlayer.GetComponent <CubeClass>().Id = clientID;
            clientInputHandler                   = newPlayer.AddComponent <InputHandler>();
            newPlayer.transform.position         = new Vector3(0, 0, 0);
            clientInputHandler.lastKnownPosition = new Vector3(0, 0, 0);
            _cubesById[clientID]                 = newPlayer;
            _pp.CreatePacket(order.ToString(), Packet.Logined, -1, true);
        });

        _pp.SubscribeToTopic(Packet.Snapshot, (message, order) => {
            // agregar al buffer/interpolar el buffer en el update
            buf.add(order, message);
        });

        _pp.SubscribeToTopic(Packet.UpdatePlayersInfo, (message, order) => {
            string[] split = message.Split('-');
            string[] ids   = split[0].Split(';');
            string[] names = split[1].Split(';');
            for (int i = 0; i < ids.Length; i++)
            {
                if (ids.Length == 0)
                {
                    continue;
                }
                GameObject cube = null;
                if (_cubesById.ContainsKey(int.Parse(ids[i])))
                {
                    cube = _cubesById[int.Parse(ids[i])];
                }
                if (cube == null)
                {
                    cube = Instantiate(playerPrefab);
                    cube.transform.position = new Vector3(0, 0, 0);
                }
                cube.GetComponent <CubeClass>().Id   = int.Parse(ids[i]);
                cube.GetComponent <CubeClass>().Name = names[i];
                _cubesById[int.Parse(ids[i])]        = cube;
            }
            _pp.CreatePacket(order.ToString(), Packet.UpdatePlayersInfo, -1, true);
        });
    }
Beispiel #2
0
    private void Start()
    {
        _pp.initStreams(client);
        _cubesById = new Dictionary <int, GameObject>();

        _cubes  = GameObject.FindGameObjectsWithTag("Cubo");
        counter = 0;

        foreach (GameObject cube in _cubes)
        {
            cube.AddComponent <Rigidbody>();
            _cubesById[cube.GetComponent <CubeClass>().Id] = cube;
            // cube.GetComponent<CubeClass>().Id = counter;
            counter++;
            print(counter);
        }



        _pp.SubscribeToTopic(Packet.Login, (message, order) =>
        {
            print("NEW USER");
            print(message);
            string[] ipname      = message.Split(';');
            GameObject newPlayer = Instantiate(playerPrefab);
            newPlayer.AddComponent <Rigidbody>();
            newPlayer.AddComponent <MoveVehicle>();
            newPlayer.GetComponent <CubeClass>().Id   = ++counter;
            newPlayer.GetComponent <CubeClass>().Name = ipname[1];
            Array.Resize(ref _cubes, _cubes.Length + 1);
            _cubes[_cubes.GetUpperBound(0)] = newPlayer;
            _cubesById[counter]             = newPlayer;
            string ids   = "";
            string names = "";
            foreach (int key in _cubesById.Keys)
            {
                ids   += key.ToString() + ';';
                names += _cubesById[key].GetComponent <CubeClass>().Name + ';';
            }

            ids   = ids.Remove(ids.Length - 1);
            names = names.Remove(names.Length - 1);
            _pp.AddIp(counter, ipname[0]);
            //Ack
            _pp.CreatePacket(order.ToString(), Packet.Login, counter, true);
            _pp.CreatePacket(counter.ToString(), Packet.Logined, counter);
            _pp.CreatePacket((ids + '-' + names), Packet.UpdatePlayersInfo);
        });
    }
Beispiel #3
0
    public void HandleUpdate(string message, long order)
    {
        string[] split = message.Split(';');
        int      id    = int.Parse(split[0]);

        char[] charArr = split[1].ToCharArray();

        if (me.Id == id)
        {
            Vector3 movement = Vector3.zero;
            foreach (char c in charArr)
            {
                Debug.Log(c);
                movement = movement + keyMappings[c];

                // if(this.IsGrounded()) {
                //     Debug.Log("grounder");

                //     Vector3 objectForce = keyMappings[c] * this.accelerationForce;
                //     this.rigidBody.drag = objectForce.sqrMagnitude / this.dragDividend;
                //     this.rigidBody.AddForce(objectForce);
                // }
            }
            this.transform.position = this.transform.position + (movement * speed);
        }
        _pp.CreatePacket(order.ToString(), Packet.Input, id, true);
    }
Beispiel #4
0
 public void Login()
 {
     Debug.Log("Sending LOGIN");
     _pp.CreatePacket(personalIP.text + ";" + username.text, Packet.Login);
 }