コード例 #1
0
        private void SetupEvents()
        {
            On("open", (E) =>
            {
                Debug.Log("Connection mate to the server");
            });

            On("register", (E) =>
            {
                ClientID = E.data["id"].ToString().RemoveQuotes();

                Debug.LogFormat("Our Client's ID ({0})", ClientID);
            });

            On("spawn", (E) =>
            {
                string id = E.data["id"].ToString().Replace("\"", string.Empty).Trim();

                GameObject go = Instantiate(playerPrefab, networkContainer);
                go.name       = string.Format("Payer({0})", id);
                NetworkIdentity networkIdentity = go.GetComponent <NetworkIdentity>();
                networkIdentity.SetControllerID(id);
                networkIdentity.SetSocketReference(this);
                serverObjects.Add(id, networkIdentity);
            });

            On("disconected", (E) =>
            {
                string id = E.data["id"].ToString();

                GameObject go = serverObjects[id].gameObject;
                Destroy(go);
                serverObjects.Remove(id);
            });

            On("updatePosition", (E) =>
            {
                string id = E.data["id"].ToString().RemoveQuotes();
                float x   = E.data["position"]["x"].f;
                float y   = E.data["position"]["y"].f;
                //actualizo posicion del juador correspondiente
                NetworkIdentity networkIdentity    = serverObjects[id];
                networkIdentity.transform.position = new Vector3(x, y, 0);
            });

            On("updateRotation", (E) =>
            {
                string id            = E.data["id"].ToString().RemoveQuotes();
                float tankRotation   = E.data["tankRotation"].f;
                float barrelRotation = E.data["barrelRotation"].f;

                //actualizo la rotacion del jugador correspondiente
                NetworkIdentity networkIdentity            = serverObjects[id];
                networkIdentity.transform.localEulerAngles = new Vector3(0, 0, tankRotation);
                networkIdentity.GetComponent <PlayerManager>().SetBarrelRotation(barrelRotation);
            });
        }
コード例 #2
0
        public void SetupEvents()
        {
            On("open", (E) =>
            {
                Debug.Log("Connection made to the server");
            });

            On("register", (E) =>
            {
                ClientID    = E.data["id"].ToString().Replace('"', ' ');
                playerCount = playerCount + 1;
                Debug.LogFormat("Our client id  = ({0})", ClientID);
            });

            On("spawn", (E) =>
            {
                // Handling spawn and passing data
                string id = E.data["id"].ToString().Replace('"', ' ');

                Transform tempTransform = spawns[int.Parse(E.data["playerCount"].ToString()) - 1];

                //tempTransform.position = new Vector3(x, y, z);
                //tempTransform.rotation = Quaternion.Euler(new Vector3(0, 180));
                GameObject go      = Instantiate(int.Parse(E.data["playerCount"].ToString()) > 2 ? audiencePrefab : playerPrefab, tempTransform);
                go.name            = String.Format("Player ({0})", id);
                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.SetControllerID(id);
                ni.SetSocketReference(this);
                serverObjects.Add(id, ni);
            });
            Disconnect();

            On("disconnected", (E) =>
            {
                // Handling disconnect
                string id = E.data["id"].ToString().Replace('"', ' ');

                GameObject go = serverObjects[id].gameObject;
                Destroy(go);              // remove from scene
                serverObjects.Remove(id); // remove from memory
            });

            On("updatePosition", (E) =>
            {
                string id = E.data["id"].ToString().Replace('"', ' ');

                float x = E.data["position"]["x"].f;
                float y = E.data["position"]["y"].f;
                float z = E.data["position"]["z"].f;

                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, z);
            });
        }
コード例 #3
0
        private void SetupEvents()
        {
            On("open", (Event) =>
            {
                Debug.Log("Connection made to the server");
            });

            On("register", (Event) =>
            {
                ClientID = Event.data["id"].ToString();
                Debug.LogFormat("Our Client's ID ({0})", ClientID);
            });

            On("spawn", (Event) =>
            {
                Debug.Log("Player spawned");
                string id = Event.data["id"].ToString();
                Debug.Log(id);

                GameObject go      = Instantiate(playerPrefab, networkContainer);
                go.name            = string.Format("Player ({0})", id);
                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.SetControllerID(id);
                ni.SetSocketReference(this);

                Debug.Log(ni);
                serverObjects.Add(id, ni);
            });

            On("disconnected", (Event) =>
            {
                Debug.Log("Player disconnected");
                string id = Event.data["id"].ToString();
                Debug.Log(id);

                GameObject go = serverObjects[id].gameObject;
                Debug.Log(go);
                Destroy(go);              //Remove from game
                serverObjects.Remove(id); //Remove from memory
            });

            On("updatePosition", (Event) => {
                Debug.Log("Position updated");
                string id = Event.data["id"].ToString();
                float x   = Event.data["position"]["x"].f;
                float y   = Event.data["position"]["y"].f;
                float z   = Event.data["position"]["z"].f;

                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, z);
            });
        }
コード例 #4
0
        private void SocketIOEventPawn(SocketIOEvent obj)
        {
            Debug.Log(obj);
            string id = obj.data["id"].ToString().RemoveQuotes();

            GameObject go = Instantiate(playerPrefab, networkContainer);

            go.name = playerPrefab.name;
            NetworkIdentity ni = go.GetComponent <NetworkIdentity>();

            ni.SetControllerID(id);
            ni.SetSocketReference(this);
            serverObject.Add(id, ni);
            if (id == ClientID)
            {
                _Camera._myClient = ni.transform;
                PanelManager._instance.BuidPanel <JoyStickControl>(PanelName.Joystick);
            }
        }
コード例 #5
0
        private void SetupEvents()
        {
            On("open", e =>
            {
                Debug.Log("Connection made to the server");
            });
            On("register", e =>
            {
                ClientID = e.data["id"].ToString();
                Debug.LogFormat($"Our Client's ID {ClientID}");
            });
            On("spawn", e =>
            {
                string id = e.data["id"].ToString();

                GameObject go      = Instantiate(playerPrefab, networkContainer);
                go.name            = $"Player ({id})";
                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.SetControllerID(id);
                ni.SetSocketReference(this);
                serverObjects.Add(id, ni);
            });
            On("disconnected", e =>
            {
                string id     = e.data["id"].ToString();
                GameObject go = serverObjects[id].gameObject;
                Destroy(go);
                serverObjects.Remove(id);
            });
            On("updatePosition", e =>
            {
                string id = e.data["id"].ToString();
                float x   = e.data["position"]["x"].f;
                float y   = e.data["position"]["y"].f;

                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, 0);
            });
        }
コード例 #6
0
        private void setupEvents()
        {
            On("open", (E) =>
            {
                Debug.Log("Connection made to the server");
            });

            On("register", (E) =>
            {
                ClientID = E.data["id"].ToString().RemoveQuotes();
                Debug.LogFormat("Our Clent's ID ({0})", ClientID);
            });

            On("spawn", (E) =>
            {
                string id          = E.data["id"].ToString().RemoveQuotes();
                GameObject go      = Instantiate(playerPrefab, networkContainer);
                go.name            = string.Format("Player ({0})", id);
                NetworkIdentity n1 = go.GetComponent <NetworkIdentity>();
                n1.SetControllerID(id);
                n1.SetSocketReference(this);
                serverObjects.Add(id, n1);
            });
            On("disconnected", (E) =>
            {
                string id     = E.data["id"].ToString().RemoveQuotes();
                GameObject go = serverObjects[id].gameObject;
                Destroy(go);
                serverObjects.Remove(id);
            });

            On("updatePosition", (E) =>
            {
                string id = E.data["id"].ToString().RemoveQuotes();
                float x   = E.data["position"]["x"].f;
                float y   = E.data["position"]["y"].f;
                float z   = E.data["position"]["z"].f;

                NetworkIdentity n1    = serverObjects[id];
                n1.transform.position = new Vector3(x, y, z);
            });

            On("serverSpawn", (E) =>
            {
                string name = E.data["name"].str;
                string id   = E.data["id"].ToString().RemoveQuotes();
                float x     = E.data["position"]["x"].f;
                float y     = E.data["position"]["y"].f;
                float z     = E.data["position"]["z"].f;
                Debug.LogFormat("Server wants us to spawn a (0)", name);
                // Vector3 aux = new Vector3(x, y, z);
                // var actualPosition = new GameObject();
                // actualPosition.transform.position = aux;
                if (!serverObjects.ContainsKey(id))
                {
                    ServerObjectData sod             = serverSpawnables.GetObjectByName(name);
                    var spawnedObject                = Instantiate(sod.prefab, networkContainer);
                    spawnedObject.transform.position = new Vector3(x, y, z);
                    var ni = spawnedObject.GetComponent <NetworkIdentity>();
                    ni.SetControllerID(id);
                    ni.SetSocketReference(this);

                    if (name == "Shell")
                    {
                        float directionX  = E.data["direction"]["x"].f;
                        float directionY  = E.data["direction"]["y"].f;
                        float directionZ  = E.data["direction"]["z"].f;
                        float inclinacion = (directionY - y) / (directionX - x);
                        //something with atan2

                        float rot = Mathf.Atan2(directionX, directionY) * Mathf.Rad2Deg;
                        Vector3 currentRotation = new Vector3(0, 0, rot - 90);

                        spawnedObject.transform.rotation = Quaternion.Euler(currentRotation);
                    }

                    serverObjects.Add(id, ni);
                }
            });
            On("serverUnspawn", (E) =>
            {
                string id          = E.data["id"].ToString().RemoveQuotes();
                NetworkIdentity n1 = serverObjects[id];
                serverObjects.Remove(id);
                DestroyImmediate(n1.gameObject);
            });
        }
コード例 #7
0
        private void setupEvents()
        {
            On("open", (E) =>
            {
                Debug.Log("Connection made to the server");
            });

            On("register", (E) =>
            {
                menu     = GameObject.FindGameObjectWithTag("MainMenu");
                ClientID = E.data["id"].ToString().RemoveQuotes();
                Debug.LogFormat("Our Client's ID ({0})", ClientID);
                // local storage 에 유저 기록이 있는지 확인 후 없다면
                menu.GetComponent <MenuManager>().setInputPanel("Enter your name");
            });

            On("setBlockChain", (E) =>
            {
                Debug.Log("setBlockChain");
                SetGenesis(E);
                Debug.Log("done setBlockChain");
            });

            On("initializeGameSetting", (E) =>
            {
                //initialize game field
                LevelCanvas = GameObject.FindGameObjectWithTag("LevelCanvas");
                UserInfo    = LevelCanvas.transform.Find("UserInfo").gameObject;
                RollButton  = LevelCanvas.transform.Find("RollButton").gameObject;
                gameManager = GameObject.FindGameObjectWithTag("GameManager");
                landManager = GameObject.FindGameObjectWithTag("LandManager");
                landManager.GetComponent <LandManager>().initializeLandSettings();
            });

            On("spawn", (E) =>
            {
                //Handling all spawning all players
                //Passed Data
                string id                  = E.data["id"].ToString().RemoveQuotes();
                int order                  = Int32.Parse(E.data["order"].ToString().RemoveQuotes());
                string username            = E.data["username"].ToString().RemoveQuotes();
                GameObject go              = Instantiate(playerPrefab, networkContainer);
                go.name                    = string.Format("Player ({0})", username);
                GameObject playerCharacter = go.transform.GetChild(order).gameObject;
                playerCharacter.SetActive(true);

                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.GetPlayerManager().setAnimator(playerCharacter.GetComponent <Animator>());
                Debug.Log("succesfully set animation");
                ni.GetPlayerManager().setColor(playerCharacter.transform.Find("Color").gameObject.GetComponent <Renderer>().material.color);
                ni.GetPlayerManager().setUserInfo(UserInfo.transform.GetChild(order).gameObject, username);

                ni.GetPlayerManager().setAssets(Int32.Parse(E.data["assets"].ToString().RemoveQuotes()));
                ni.GetPlayerManager().setBalance(Int32.Parse(E.data["balance"].ToString().RemoveQuotes()));

                ni.SetControllerID(id);
                ni.SetSocketReference(this);

                serverObjects.Add(id, ni);
                Debug.Log("spawn complete");
            });

            On("disconnected", (E) =>
            {
                string id = E.data["id"].ToString().RemoveQuotes();

                GameObject go = serverObjects[id].gameObject;
                Destroy(go);              //Remove from game
                serverObjects.Remove(id); //Remove from memory
                Debug.Log("distroy gameobject");
            });

            On("updatePosition", (E) =>
            {
                Data D     = SetNextBlock(E);
                string id  = D.eventData["id"].ToString().RemoveQuotes();
                float DIR  = D.eventData["DIR"].f;  // 방향주사위 눈 {0 :북 1 :동 2 : 남 3 :서 }
                float DIST = D.eventData["DIST"].f; // 거리주사위 눈
                float x    = D.eventData["x"].f;    // 당장 가야할 dx (항상 양수)
                float y    = D.eventData["y"].f;    // 당장 가야할 dy (항상 양수)
                float dist = D.eventData["dist"].f; // 남은 이동 거리 횟수
                Debug.Log("updatePosition");

                NetworkIdentity ni = serverObjects[id];
                gameManager.GetComponent <GameManager>().UpdatePosition(ni, DIR, x, y, dist, DIST);
            });
            On("updateBalance", (E) =>
            {
                Debug.Log("updateBalanece");
                Data D          = SetNextBlock(E);
                string sender   = D.eventData["senderID"].ToString().RemoveQuotes();
                string receiver = D.eventData["receiverID"].ToString().RemoveQuotes();
                if (receiver != "")
                {
                    NetworkIdentity receiver_ni = serverObjects[receiver];
                    receiver_ni.GetPlayerManager().Deposit(Int32.Parse(D.eventData["cost"].ToString().RemoveQuotes()));
                    receiver_ni.GetPlayerManager().setAssets(Int32.Parse(D.eventData["receiverAssets"].ToString().RemoveQuotes()));
                }
                if (sender != "")
                {
                    NetworkIdentity sender_ni = serverObjects[sender];
                    sender_ni.GetPlayerManager().Withdraw(Int32.Parse(D.eventData["cost"].ToString().RemoveQuotes()));
                    sender_ni.GetPlayerManager().setAssets(Int32.Parse(D.eventData["senderAssets"].ToString().RemoveQuotes()));
                }
            });
            On("updateLandData", (E) =>
            {
                Debug.Log("call updateLandData");
                Data D = SetNextBlock(E);
                Debug.Log("after SetNextBlock");
                Debug.Log(D);
                landManager.GetComponent <LandManager>().updateLandData(D);
            });
            // 1 Turn Start
            On("updateTurn", (E) =>
            {
                Data D       = SetNextBlock(E);
                string id    = D.eventData["id"].ToString().RemoveQuotes();
                int lapsToGo = Int32.Parse(D.eventData["lapsToGo"].ToString().RemoveQuotes());
                gameManager.GetComponent <GameManager>().UpdateTurn(lapsToGo);
                NetworkIdentity ni = serverObjects[id];
                ni.checkIsMyTurn(id);
                Debug.Log("updateTurn");

                if (ni.IsMyTurn())
                {
                    Debug.Log("ISmYTURN");
                    RollButton.GetComponent <RollDices>().StartRoll();
                }
            });
            On("gameOver", (E) =>
            {
                Debug.Log("On GAME OVER");
                Data D = SetNextBlock(E);
                gameManager.GetComponent <GameManager>().UpdateTurn(0);
                gameManager.GetComponent <GameManager>().GameOver(D);
            });
            On("GoBankrupt", (E) =>
            {
                Data D             = SetNextBlock(E);
                string id          = D.eventData["id"].ToString().RemoveQuotes();
                NetworkIdentity ni = serverObjects[id];
                if (id == ClientID)
                {
                    CallTurnOver(ni);
                }
                ni.GetPlayerManager().setAssets(0);
                ni.GetPlayerManager().setBalance(0);
                landManager.GetComponent <LandManager>().resetLandSettings(id);
                ni.GetPlayerManager().SetUserState("BANKRUPT");
            });
            On("loadGame", (E) =>
            {
                Debug.Log("Switching to game");
                StartCoroutine(SceneManagementManager.Instance.LoadLevel(SceneList.LEVEL, (levelName) => {
                    SceneManagementManager.Instance.UnLoadLevel(SceneList.MAIN_MENU);
                }, this));
            });
            On("OnEnterGameLobby", (E) => {
                int index   = Int32.Parse(E.data["index"].ToString().RemoveQuotes());
                string id   = E.data["id"].ToString().RemoveQuotes();
                string name = E.data["name"].ToString().RemoveQuotes();
                gameLobby.GetComponent <GameLobby>().OnEnterPlayer(index, id, name);
            });
            On("lobbyUpdate", (E) => {
                OnGameStateChange.Invoke(E);
            });
            On("changedReadyState", (E) =>
            {
                int index = Int32.Parse(E.data["index"].ToString().RemoveQuotes());
                //string id = E.data["id"].ToString().RemoveQuotes();
                bool state = Boolean.Parse(E.data["state"].ToString().RemoveQuotes());
                gameLobby.GetComponent <GameLobby>().setPlayerState(index, state);
            });
            On("signupResult", (E) =>
            {
                string result = E.data["result"].ToString().RemoveQuotes();
                switch (result)
                {
                case "success":
                    menu.GetComponent <MenuManager>().setLobbyPanel();
                    break;

                case "exist":
                    menu.GetComponent <MenuManager>().setInputPanel("exist name!");
                    break;
                }
            });
        }
コード例 #8
0
        // Update is called once per frame
        // public override void Update()
        // {
        //     base.Update();
        // }
        private void SetupEvents()
        {
            // Initial connection will connect just once, even if console displays TWO logs.
            io.On("open", (e) => {
                Debug.Log("connection made to server");
            });

            io.On("register", (e) => {
                ClientID = new JSONObject(e.data)["id"].str;
                Debug.LogFormat("Our Client's Id is ({0})", ClientID);
            });

            io.On("spawn", (e) => {
                // handling all spawned players
                string id = new JSONObject(e.data)["id"].str;

                GameObject go      = Instantiate(playerGO, networkContainer);
                go.name            = string.Format("Player ({0})", id);
                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.SetControllerID(id);
                ni.SetSocketReference(io.socketIO);
                serverObjects.Add(id, ni);
            });

            io.On("disconnected", (e) => {
                string id = new JSONObject(e.data)["id"].str;
                Debug.Log("player disconnected");
                GameObject go = serverObjects[id].gameObject;
                Destroy(go); // remove GO from game
                serverObjects.Remove(id);
            });

            io.On("updateRotation", (e) => {
                JSONObject data    = new JSONObject(e.data);
                string id          = data["id"].ToString().RemoveQuotes();
                float weaponRot    = data["weaponRotation"].f;
                bool flipped       = data["playerFlipped"].b;
                NetworkIdentity ni = serverObjects[id];
                // Debug.Log("updating other rotations");
                ni.GetComponent <PlayerManager>().SetWeaponRotation(weaponRot);
            });

            io.On("updatePosition", (e) => {
                JSONObject data       = new JSONObject(e.data);
                string id             = data["id"].ToString().RemoveQuotes();
                float x               = data["position"]["x"].f;
                float y               = data["position"]["y"].f;
                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, 0);
            });

            io.On("serverSpawn", (e) => {
                JSONObject data = new JSONObject(e.data);
                string name     = data["name"].str;
                string id       = data["id"].ToString().RemoveQuotes();
                float x         = data["position"]["x"].f;
                float y         = data["position"]["y"].f;
                if (!serverObjects.ContainsKey(id))
                {
                    // Debug.LogFormat("Server wants to spawn '{0}'", name);
                    ServerObjectData sod           = serverSpawnables.GetObjectByName(name);
                    var spawnObject                = Instantiate(sod.Prefab, networkContainer);
                    spawnObject.transform.position = new Vector3(x, y, 0);
                    NetworkIdentity ni             = spawnObject.GetComponent <NetworkIdentity>();
                    ni.SetControllerID(id);
                    ni.SetSocketReference(io.socketIO);

                    // if projectile apply direction as well
                    if (name == "Arrow_Regular")
                    {
                        float directionX = data["direction"]["x"].f;
                        float directionY = data["direction"]["y"].f;
                        string activator = data["activator"].ToString().RemoveQuotes();
                        float speed      = data["speed"].f;

                        float rot = Mathf.Atan2(directionY, directionX) * Mathf.Rad2Deg;
                        Vector3 currentRotation        = new Vector3(0, 0, rot + 180);
                        spawnObject.transform.rotation = Quaternion.Euler(currentRotation);

                        WhoActivatedMe whoActivatedMe = spawnObject.GetComponent <WhoActivatedMe>();
                        whoActivatedMe.SetActivator(activator);

                        Projectile projectile = spawnObject.GetComponent <Projectile>();
                        projectile.Direction  = new Vector2(directionX, directionY);
                        projectile.Speed      = speed;
                    }
                    serverObjects.Add(id, ni);
                }
            });
            io.On("serverDespawn", (e) => {
                string id          = new JSONObject(e.data)["id"].str;
                NetworkIdentity ni = serverObjects[id];
                serverObjects.Remove(id);
                Destroy(ni.gameObject);
            });
            io.On("playerDied", (e) => {
                string id          = new JSONObject(e.data)["id"].str;
                NetworkIdentity ni = serverObjects[id];
                ni.gameObject.SetActive(false);
            });
            io.On("playerRespawn", (e) => {
                JSONObject data       = new JSONObject(e.data);
                string id             = data["id"].ToString().RemoveQuotes();
                float x               = data["position"]["x"].f;
                float y               = data["position"]["y"].f;
                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, 0);
                ni.gameObject.SetActive(true);
            });
            io.On("loadGame", (e) => {
                SceneManagementManager.Instance.LoadLevel(levelName: SceneList.LEVEL, onLevelLoaded: (levelName) => {
                    SceneManagementManager.Instance.UnLoadLevel(SceneList.MAIN_MENU);
                });
            });
        }
コード例 #9
0
        private void setupEvents()
        {
            On("open", (E) => {
                Debug.Log("Connection made to the server");
            });

            On("register", (E) => {
                ClientID = E.data["id"].ToString().RemoveQuotes();
                Debug.LogFormat("Our Client's ID ({0})", ClientID);
            });

            On("spawn", (E) => {
                //Handling all spawning all players
                //Passed Data
                string id = E.data["id"].ToString().RemoveQuotes();

                GameObject go      = Instantiate(playerPrefab, networkContainer);
                go.name            = string.Format("Player ({0})", id);
                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.SetControllerID(id);
                ni.SetSocketReference(this);
                serverObjects.Add(id, ni);
            });

            On("disconnected", (E) => {
                string id = E.data["id"].ToString().RemoveQuotes();

                GameObject go = serverObjects[id].gameObject;
                Destroy(go);              //Remove from game
                serverObjects.Remove(id); //Remove from memory
            });

            On("updatePosition", (E) => {
                string id = E.data["id"].ToString().RemoveQuotes();
                float x   = E.data["position"]["x"].f;
                float y   = E.data["position"]["y"].f;

                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, 0);
            });

            On("updateRotation", (E) => {
                string id            = E.data["id"].ToString().RemoveQuotes();
                float tankRotation   = E.data["tankRotation"].f;
                float barrelRotation = E.data["barrelRotation"].f;

                NetworkIdentity ni            = serverObjects[id];
                ni.transform.localEulerAngles = new Vector3(0, 0, tankRotation);
                ni.GetComponent <PlayerManager>().SetRotation(barrelRotation);
            });

            On("updateAI", (E) => {
                string id            = E.data["id"].ToString().RemoveQuotes();
                float x              = E.data["position"]["x"].f;
                float y              = E.data["position"]["y"].f;
                float tankRotation   = E.data["tankRotation"].f;
                float barrelRotation = E.data["barrelRotation"].f;

                NetworkIdentity ni = serverObjects[id];
                if (ni.gameObject.activeInHierarchy)
                {
                    StartCoroutine(AIPositionSmoothing(ni.transform, new Vector3(x, y, 0)));
                    ni.GetComponent <AIManager>().SetTankRotation(tankRotation);
                    ni.GetComponent <AIManager>().SetBarrelRotation(barrelRotation);
                }
            });

            On("serverSpawn", (E) => {
                string name = E.data["name"].str;
                string id   = E.data["id"].ToString().RemoveQuotes();
                float x     = E.data["position"]["x"].f;
                float y     = E.data["position"]["y"].f;
                Debug.LogFormat("Server wants us to spawn a '{0}'", name);

                if (!serverObjects.ContainsKey(id))
                {
                    ServerObjectData sod             = serverSpawnables.GetObjectByName(name);
                    var spawnedObject                = Instantiate(sod.Prefab, networkContainer);
                    spawnedObject.transform.position = new Vector3(x, y, 0);
                    var ni = spawnedObject.GetComponent <NetworkIdentity>();
                    ni.SetControllerID(id);
                    ni.SetSocketReference(this);

                    //If bullet apply direction as well
                    if (name == "Bullet")
                    {
                        float directionX = E.data["direction"]["x"].f;
                        float directionY = E.data["direction"]["y"].f;
                        string activator = E.data["activator"].ToString().RemoveQuotes();
                        float speed      = E.data["speed"].f;

                        float rot = Mathf.Atan2(directionY, directionX) * Mathf.Rad2Deg;
                        Vector3 currentRotation          = new Vector3(0, 0, rot - 90);
                        spawnedObject.transform.rotation = Quaternion.Euler(currentRotation);

                        WhoActivatedMe whoActivatedMe = spawnedObject.GetComponent <WhoActivatedMe>();
                        whoActivatedMe.SetActivator(activator);

                        Projectile projectile = spawnedObject.GetComponent <Projectile>();
                        projectile.Direction  = new Vector2(directionX, directionY);
                        projectile.Speed      = speed;
                    }

                    serverObjects.Add(id, ni);
                }
            });

            On("serverUnspawn", (E) => {
                string id          = E.data["id"].ToString().RemoveQuotes();
                NetworkIdentity ni = serverObjects[id];
                serverObjects.Remove(id);
                DestroyImmediate(ni.gameObject);
            });

            On("playerDied", (E) => {
                string id          = E.data["id"].ToString().RemoveQuotes();
                NetworkIdentity ni = serverObjects[id];
                if (ni.GetComponent <AIManager>())
                {
                    ni.GetComponent <AIManager>().StopCoroutines();
                }

                ni.gameObject.SetActive(false);
            });

            On("playerRespawn", (E) => {
                string id             = E.data["id"].ToString().RemoveQuotes();
                float x               = E.data["position"]["x"].f;
                float y               = E.data["position"]["y"].f;
                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, 0);
                ni.gameObject.SetActive(true);
            });

            On("loadGame", (E) => {
                Debug.Log("Switching to game");
                SceneManagementManager.Instance.LoadLevel(SceneList.LEVEL, (levelName) => {
                    SceneManagementManager.Instance.UnLoadLevel(SceneList.MAIN_MENU);
                });
            });

            On("lobbyUpdate", (E) => {
                OnGameStateChange.Invoke(E);
            });
        }
コード例 #10
0
        private void setupEvents()
        {
            On("open", (E) => {
                Debug.Log("Connection Made To The Server");
            });

            On("register", (E) => {
                ClientID = E.data["id"].ToString().Trim('"');

                Debug.LogFormat("Our client's ID ({0})", ClientID);
            });

            On("spawn", (E) => {
                //Handling all spawning all players
                //Passed Data
                string id = E.data["id"].ToString().Trim('"');

                GameObject go      = Instantiate(playerPrefab, networkContainer);
                go.name            = string.Format("Player ({0})", id);
                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.SetControllerID(id);
                ni.SetSocketReference(this);
                serverObjects.Add(id, ni);
            });

            On("disconected", (E) => {
                string id = E.data["id"].ToString().Trim('"');

                GameObject go = serverObjects[id].gameObject;
                Destroy(go);              //Remove from game
                serverObjects.Remove(id); //Remove from memory
                Debug.Log("disconected");
            });

            On("updatePosition", (E) => {
                string id = E.data["id"].ToString().Trim('"');
                float x   = E.data["position"]["x"].f;
                float y   = E.data["position"]["y"].f;

                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, 0);
            });

            On("updateRotation", (E) => {
                string id            = E.data["id"].ToString().Trim('"');
                float tankRotation   = E.data["tankRotation"].f;
                float barrelRotation = E.data["barrelRotation"].f;

                NetworkIdentity ni            = serverObjects[id];
                ni.transform.localEulerAngles = new Vector3(0, 0, tankRotation);
                ni.GetComponent <PlayerManager>().SetRotation(barrelRotation);
            });

            On("serverSpawn", (E) => {
                string name = E.data["name"].str;
                string id   = E.data["id"].ToString().Trim('"');
                float x     = E.data["position"]["x"].f;
                float y     = E.data["position"]["y"].f;
                Debug.LogFormat("Server wants us to spawn a '{0}", name);

                if (!serverObjects.ContainsKey(id))
                {
                    ServerObjectData sod             = serverSpawnables.GetObjectByName(name);
                    var spwanedObject                = Instantiate(sod.Prefab, networkContainer);
                    spwanedObject.transform.position = new Vector3(x, y, 0);
                    var ni = spwanedObject.GetComponent <NetworkIdentity>();
                    ni.SetControllerID(id);
                    ni.SetSocketReference(this);

                    //If bullet applay direction as well
                    if (name == "Bullet")
                    {
                        float directionX = E.data["direction"]["x"].f;
                        float directionY = E.data["direction"]["y"].f;

                        float rot = Mathf.Atan2(directionY, directionX) * Mathf.Rad2Deg;
                        Vector3 currentRotation          = new Vector3(0, 0, rot - 90);
                        spwanedObject.transform.rotation = Quaternion.Euler(currentRotation);
                    }

                    serverObjects.Add(id, ni);
                }
            });

            On("serverUnspawn", (E) => {
                string id          = E.data["id"].ToString().Trim('"');
                NetworkIdentity ni = serverObjects[id];
                serverObjects.Remove(id);
                DestroyImmediate(ni.gameObject);
            });
        }
コード例 #11
0
ファイル: NetworkClient.cs プロジェクト: k0bu/UnityNode
        private void SetUpEvents()
        {
            //open prints two times, but this is bug with the socket.io asset
            //the connection does not get duplicated so it does not matter much.
            On("open", (e) =>
            {
                Debug.Log("Connection Made with Server");
            });

            On("register", (e) =>
            {
                ClientID = e.data["id"].ToString().RemoveQuotes();//.RemoveQuotes();

                Debug.LogFormat("Our Client's ID is ({0})", ClientID);
            });

            On("spawn", (e) =>
            {
                string id = e.data["id"].ToString().RemoveQuotes();

                GameObject go = Instantiate(playerPrefab, networkContainer);
                go.name       = string.Format("Player ({0})", id);
                //Network Identity: NI : ni
                NetworkIdentity ni = go.GetComponent <NetworkIdentity>();
                ni.SetControllerID(id);
                ni.SetSocketReference(this);
                serverObjects.Add(id, ni);
            });

            On("disconnected", (e) =>
            {
                string id = e.data["id"].ToString().RemoveQuotes();

                GameObject go = serverObjects[id].gameObject;
                Destroy(go);
                serverObjects.Remove(id);
            });

            On("updatePosition", (e) =>
            {
                string id = e.data["id"].ToString().RemoveQuotes();
                float x   = e.data["position"]["x"].f;
                float y   = e.data["position"]["y"].f;

                NetworkIdentity ni    = serverObjects[id];
                ni.transform.position = new Vector3(x, y, 0);
            });

            On("updateRotation", (e) =>
            {
                string id = e.data["id"].ToString().RemoveQuotes();

                float tankRotation   = e.data["tankRotation"].f;
                float barrelRotation = e.data["barrelRotation"].f;

                NetworkIdentity ni            = serverObjects[id];
                ni.transform.localEulerAngles = new Vector3(0, 0, tankRotation);
                ni.GetComponent <PlayerManager>().SetRotation(barrelRotation);
            });

            On("serverSpawn", (e) =>
            {
                string name = e.data["name"].str;
                string id   = e.data["id"].ToString().RemoveQuotes();
                float x     = e.data["position"]["x"].f;
                float y     = e.data["position"]["y"].f;
                Debug.LogFormat("Server wants us to spawn a '{0}'", name);

                if (!serverObjects.ContainsKey(id))
                {
                    ServerObjectData sod             = serverSpawnables.GetObjectByName(name);
                    var spawnedObject                = Instantiate(sod.Prefab, networkContainer);
                    spawnedObject.transform.position = new Vector3(x, y, 0);
                    var ni = spawnedObject.GetComponent <NetworkIdentity>();
                    ni.SetControllerID(id);
                    ni.SetSocketReference(this);

                    //If bullet, apply direction as well
                    if (name == "Bullet")
                    {
                        float directionX = e.data["direction"]["x"].f;
                        float directionY = e.data["direction"]["y"].f;

                        float rot = Mathf.Atan2(directionY, directionX) * Mathf.Rad2Deg;
                        Vector3 currentRotation          = new Vector3(0, 0, rot - 90);
                        spawnedObject.transform.rotation = Quaternion.Euler(currentRotation);
                    }

                    serverObjects.Add(id, ni);
                }
            });

            On("serverUnspawn", (e) =>
            {
                string id          = e.data["id"].ToString().RemoveQuotes();
                NetworkIdentity ni = serverObjects[id];
                serverObjects.Remove(id);
                DestroyImmediate(ni.gameObject);
            });
        }