IEnumerator Login(string username, string password)
    {
        NetObj loginRequest = new NetObj();

        loginRequest.resourcePath = API_CLIENT.serverLocation + "api/login";
        loginRequest.payload      = "{\n\"username\":\"" + username + "\",\n\"password\":\"" + password + "\"\n}";

        loginScreen.SetActive(false);
        loginButton.SetActive(false);
        connectionSprite.SetActive(true);

        yield return(loginRequest.Post());

        connectionSprite.SetActive(false);

        if (loginRequest.responce.responseHeaders ["STATUS"] == API_CLIENT.okCode)
        {
            loggedIn = true;
            successScreen.SetActive(true);
            Debug.Log(loginRequest.responce.text);
        }
        else
        {
            Debug.Log(loginRequest.responce.text);
            loginScreen.SetActive(true);
            loginButton.SetActive(true);
        }
    }
示例#2
0
    void InstantiateOtherNetObj(NetObj otherNetObj)
    {
        GameObject prefab = GetPrefabFromNetObjType(otherNetObj.Type);
        var        go     = Instantiate(prefab, Vector3.zero, Quaternion.identity);

        var netObjGene = go.GetComponent <NetObjGene>();

        netObjGene.NetObj        = otherNetObj;
        netObjGene.IsLocalPlayer = false;
        netObjGene.OfflineMode   = false;

        var camera = go.GetComponentInChildren <Camera>();

        if (camera != null)
        {
            camera.enabled = false;
        }

        var listener = go.GetComponentInChildren <AudioListener>();

        if (listener != null)
        {
            listener.enabled = false;
        }

        go.GetComponentInChildren <Rigidbody>().isKinematic = true;

        _otherNetObjs[otherNetObj.Id] = netObjGene;
    }
示例#3
0
 // Update is called once per frame
 void Update()
 {
     for (int i = 0; i < netObjs.Count; i++)
     {
         NetObj temp = netObjs[i];
         temp.obj.transform.position = Vector3.Lerp(temp.obj.transform.position, temp.followVec, 0.2f);
     }
 }
    // Use this for initialization
    IEnumerator Start()
    {
        // Test code -- To be moved out into a connection testing function/class.
        // Asks if server is online, via api/status which returns an ok 200 http responce.
        NetObj callServer = new NetObj();

        callServer.contentType  = "";
        callServer.resourcePath = serverLocation + "api/status";
        yield return(callServer.Post());

        if (callServer.responce.responseHeaders ["STATUS"] == okCode)
        {
            isServerAlive = true;
        }
    }
示例#5
0
    void PositionSync()
    {
        if (positionQue.Count == 0)
        {
            return;
        }

        PositionSync temp = positionQue[0];

        int  i = 0;
        bool t = false;

        while (i < netObjs.Count)
        {
            if (netObjs[i].ID == temp.ID)
            {
                if (ID != temp.ID)
                {
                    //netObjs[i].obj.transform.position = Vector3.Lerp(netObjs[i].obj.transform.position, temp.position, 0.5f);
                    //netObj[i].transform.position = temp.position;
                    //netObjs[i].followVec = temp.position;
                    NetObj netObj = netObjs[i];
                    netObj.followVec = temp.position;
                    netObjs[i]       = netObj;
                }

                t = true;
                break;
            }
            i++;
        }


        if (t == false && ID.Equals(temp.ID) == false)
        {
            Debug.Log("Receive new Player");
            GameObject tempObj    = Instantiate <GameObject>(Resources.Load <GameObject>("NetObj"));
            NetObj     tempNetObj = new NetObj {
                obj       = tempObj,
                ID        = temp.ID,
                followVec = temp.position
            };
            tempObj.name = temp.ID.ToString() + "_NetObj";
            netObjs.Add(tempNetObj);
        }

        positionQue.RemoveAt(0);
    }
示例#6
0
        public void KickClient(GameClient clientToKick)
        {
            _connectedClients.KickClient(clientToKick);
            foreach (var netObj in _netObjects.Values.Where(x => x.GameClientId == clientToKick.Id))
            {
                _udpServer.MessageSender.SendDestroyNetObjToOtherClients(clientToKick, netObj.Id);
            }
            NetObj removedNetObj = null;

            _netObjects.Where(x => x.Value.GameClientId == clientToKick.Id).ToList().ForEach(x => _netObjects.Remove(x.Key, out removedNetObj));
            if (removedNetObj == null)
            {
                throw new Exception("Failed to remove netobj");
            }
            _udpServer.MessageSender.SendPlayerDisconnectedToAllClients(clientToKick);
        }
示例#7
0
 void OnNetObjCreated(GameClient sender, NetObj newNetObj)
 {
     _netObjects[newNetObj.Id] = newNetObj;
     _udpServer.MessageSender.SendNewNetObjToOtherClients(sender, newNetObj);
 }
示例#8
0
 void OnNewNetObj(NetObj newNetObj)
 {
     Debug.Log("New net obj! " + newNetObj.GameClientId + ": " + newNetObj.Id);
     InstantiateOtherNetObj(newNetObj);
 }
示例#9
0
 public void SendNetObjCreate(NetObj newNetObj) => SendMessageToServer(new UdpMessage("netobjcreate", newNetObj));
示例#10
0
 public void SendNewNetObjToOtherClients(GameClient client, NetObj newNetObj)
 {
     SendMessageToOtherClients(new UdpMessage("newnetobj", newNetObj), client);
 }
示例#11
0
 void SendNewNetObjToClient(NetObj item, IPEndPoint iPEndPoint)
 {
     SendMessageToClient(new UdpMessage("newnetobj", item), iPEndPoint);
 }