Example #1
0
    /// <summary>
    /// inform the local player to destroy offline network player
    /// </summary>
    /// <param name="_msg">Message.</param>
    //disconnect network player
    void OnUserDisconnected(SocketUDPEvent data)
    {
        /*
         * data.pack[0]  = USER_DISCONNECTED
         * data.pack[1] = id (network player id)
         * data.pack[2] = isMasterServer
         */
        Debug.Log("disconnect!");

        if (bool.Parse(data.pack [2]))
        {
            RestartGame();
        }
        else
        {
            if (networkPlayers [data.pack [1]] != null)
            {
                //destroy network player by your id
                Destroy(networkPlayers [data.pack [1]].gameObject);

                //remove from the dictionary
                networkPlayers.Remove(data.pack [1]);
            }
        }
    }
Example #2
0
    public void OnThrowDone(SocketUDPEvent data)
    {
        GameObject player = GameObject.Find(myId);

        player.GetComponent <PlayerManager>().canThrow = false;


        //now sending msg to all client to show card on screen
        int rmvCrdNo = 0;
        int rmIdex   = 0;

        //now delet the card from hand
        //and getting card no in having cards to remove it from list too
        foreach (GameObject crdToRemove in gameManagerScript.havingCards)
        {
            if (crdToRemove.name == data.pack[1] && crdToRemove.tag == data.pack[2])
            {
                Destroy(crdToRemove);

                Debug.Log("card removed");

                rmIdex = rmvCrdNo;
            }

            rmvCrdNo++;
        }

        gameManagerScript.havingCards.RemoveAt(rmIdex);
    }
Example #3
0
    /// <summary>
    /// Raises the spawn player event.
    /// </summary>
    /// <param name="_msg">Message.</param>
    void OnSpawnPlayer(SocketUDPEvent data)
    {
        /*
         * data.pack[0] = SPAWN_PLAYER
         * data.pack[1] = id (network player id)
         * data.pack[2]= name
         * data.pack[3] = position.x
         * data.pack[4] = position.y
         * data.pack[5] = position.z
         * data.pack[6] = rotation.x
         * data.pack[7] = rotation.y
         * data.pack[8] = rotation.z
         * data.pack[9] = rotation.w
         */

        if (onLogged)
        {
            bool alreadyExist = false;

            //verify all players to  prevents copies
            foreach (KeyValuePair <string, PlayerManager> entry in networkPlayers)
            {
                // same id found ,already exist!!!
                if (entry.Value.id == data.pack [1])
                {
                    alreadyExist = true;
                }
            }
            if (!alreadyExist)
            {
                Debug.Log("creating a new player");

                PlayerManager newPlayer;

                // newPlayer = GameObject.Instantiate( network player avatar or model, spawn position, spawn rotation)
                newPlayer = GameObject.Instantiate(networkPlayerPrefabs [0],
                                                   new Vector3(float.Parse(data.pack[3]), float.Parse(data.pack[4]),
                                                               float.Parse(data.pack[5])), Quaternion.identity).GetComponent <PlayerManager> ();


                //it is not the local player
                newPlayer.isLocalPlayer = false;

                //network player online in the arena
                newPlayer.isOnline = true;

                //set the network player 3D text with his name

                newPlayer.gameObject.name = data.pack [1];

                //puts the local player on the list
                networkPlayers [data.pack [1]] = newPlayer;

                //setting player pos
                newPlayer.gameObject.transform.position = spawnPoints[crntSpwnPlrNo].transform.position;

                crntSpwnPlrNo++;
            }
        }
    }
    private void OnJoinGame(SocketUDPEvent data)
    {
        /*
         * data.pack[0]= CALLBACK_NAME: "JOIN_SUCCESS"
         * data.pack[1]= msg
         */

        Debug.Log("有人加入房间");
    }
    private void OnPongMsg(SocketUDPEvent data)
    {
        /*
         * data.pack[0]= CALLBACK_NAME: "PONG"
         * data.pack[1]= "pong."
         */
        Debug.Log("收到服务器创建成功的消息,receive pong");

        serverFound = true;

        MainSceneCanvasMg.instance.ShowAlertDialog("有服务器运行了");
    }
    /// <summary>
    /// 接收服务器的创建消息
    /// receives an answer of the server.
    /// from  void OnReceivePing(string [] pack,IPEndPoint anyIP ) in server
    /// </summary>
    public void OnPrintPongMsg(SocketUDPEvent data)
    {
        /*
         * data.pack[0]= CALLBACK_NAME: "PONG"
         * data.pack[1]= "pong!!!!"
         */

        Debug.Log("收到服务器创建成功的消息,receive pong");

        serverFound = true;

        //arrow the located text in the inferior part of the game screen
        TicTacCanvasManager.instance.txtSearchServerStatus.text = "------- server is running -------";
    }
Example #7
0
    /// <summary>
    ///  receives an answer of the server.
    /// from  void OnReceivePing(string [] pack,IPEndPoint anyIP ) in server
    /// </summary>
    public void OnPrintPongMsg(SocketUDPEvent data)
    {
        /*
         * data.pack[0]= CALLBACK_NAME: "PONG"
         * data.pack[1]= "pong!!!!"
         */

        serverFound = true;

        contTimes = 0;

        //arrow the located text in the inferior part of the game screen
        CanvasManager.instance.txtSearchServerStatus.text = "------- server is running -------";
    }
    /// <summary>
    /// 服务器广播的结束游戏方法
    /// get the server update that the player of this instance lost the game
    /// </summary>
    void OnGameOver(SocketUDPEvent data)
    {
        /*
         * data.data.pack[0] = CALLBACK_NAME: "GAME_OVER" from server
         * data.data.pack[1] = player_id
         */

        // how the server message is transmitted to both players,
        // we should check if we are the next player to play, the loser
        //data.pack[1] stores the id of the player who won the match
        //判断此客户端是否不是赢家,重置游戏
        if (!data.pack[1].Equals(myId))
        {
            BoardManager.instance.ResetGameForLoserPlayer();
        }
        myTurn = false;
    }
    private void OnUserDisconnected(SocketUDPEvent data)
    {
        /*
         * data.pack[0]= CALLBACK_NAME: "USER_DISCONNECTED"
         * data.pack[1]= msg
         * data.pack[2]= isMasterServer
         */

        Debug.Log("有人断开了连接");
        //是否是服务器断开连接
        if (bool.Parse(data.pack[2]))
        {
            RestartGame();
        }
        else
        {
            //有一个其他房客退出
        }
    }
Example #10
0
    /// <summary>
    ///  Update the network player position to local player.
    /// </summary>
    /// <param name="_msg">Message.</param>
    void OnUpdatePosition(SocketUDPEvent data)
    {
        /*
         * data.pack[0] = UPDATE_MOVE
         * data.pack[1] = id (network player id)
         * data.pack[2] = position.x
         * data.pack[3] = position.y
         * data.pack[4] = position.z
         */

        //it reduces to zero the accountant meaning that answer of the server exists to this moment
        contTimes = 0;

        if (networkPlayers [data.pack [1]] != null)
        {
            //find network player
            PlayerManager netPlayer = networkPlayers [data.pack [1]];
            netPlayer.timeOut = 0f;
        }
    }
    /// <summary>
    /// 游戏开始
    /// Raises the start game event.
    /// both players receive this response from the server
    /// </summary>
    /// <param name="data">Data.</param>
    void OnStartGame(SocketUDPEvent data)
    {
        Debug.Log("\n game is runing...\n");

        // 查看玩家棋子类型
        // check if it's the first player to connect
        if (GetPlayerType().Equals("square"))
        {
            // define as first to play
            myTurn = true;

            TicTacCanvasManager.instance.txtHeader.text = "You are player O";
        }
        else// if you are the second player
        {
            myTurn = false;

            TicTacCanvasManager.instance.txtHeader.text = "You are player X";

            // load the game screen for this player only,
            //as the screen has already been loaded for the first player logged into the OnJoinGame method
            TicTacCanvasManager.instance.OpenScreen(1);

            //load the board for this player only
            BoardManager.instance.LoadBoard();
        }

        // check if you are the first player to connect
        if (myTurn)
        {
            TicTacCanvasManager.instance.txtFooter.text = "您的回合";
        }
        else
        {
            TicTacCanvasManager.instance.txtFooter.text = "对手回合";
        }

        Debug.Log("\n game loaded...\n");
    }
    /// <summary>
    /// 服务器断开连接回调函数
    /// inform the local player to destroy offline network player
    /// </summary>
    void OnUserDisconnected(SocketUDPEvent data)
    {
        /*
         * data.pack[0]  = USER_DISCONNECTED
         * data.pack[1] = id (network player id)
         * data.pack[2] = isMasterServer
         */
        Debug.Log("断开连接disconnect!");

        //如果点开链接的客户端是服务器,此客户端重置游戏
        // check if the disconnected player was the master server
        if (bool.Parse(data.pack[2]))
        {
            RestartGame();
        }
        else
        {
            //? ? ?
            BoardManager.instance.ResetGameForWOPlayer();
            myTurn = false;
        }
    }
    /// <summary>
    /// 加入游戏房间方法
    /// Raises the join game event from TictactToeServer.
    /// only the first player to connect gets this feedback from the server
    /// </summary>
    /// <param name="data">Data.</param>
    void OnJoinGame(SocketUDPEvent data)
    {
        Debug.Log("\n joining ...\n");

        // open game screen only for the first player, as the second has not logged in yet
        //加入房间打开游戏UI面板
        TicTacCanvasManager.instance.OpenScreen(1);

        Debug.Log("try to loading board");

        //初始化棋盘 load the board only for the first player, because the second one hasn't logged in yet
        BoardManager.instance.LoadBoard();

        // set square to the first player to connect
        // 应该是设置玩家棋子类型
        SetPlayerType("square");

        TicTacCanvasManager.instance.txtHeader.text = "You are player O";

        TicTacCanvasManager.instance.txtFooter.text = "connected! \n Waiting for another player";

        Debug.Log("\n first player SQUARE joined...\n");
    }
    /// <summary>
    /// 下棋更新面板
    /// updates the board with information from TicTactToeServer
    /// </summary>
    void OnUpdateBoard(SocketUDPEvent data)
    {
        /*
         * data.data.pack[0] = CALLBACK_NAME: "UPDATE_BOARD" from server
         * data.data.pack[1] = 最后一步玩家id -- id of the opponent who made the last move
         * data.data.pack[2] = player_type
         * data.data.pack[3]= j
         * data.data.pack[4] = i
         */

        // how the server message is transmitted to both players,
        // we should check if we are the next player to play, message target
        //data.pack[1] stores the id of the player who finished his move
        //如果落子玩家不是此客户端
        if (!data.pack[1].Equals(myId))
        {
            //设置棋盘落子行列值
            // set row i and column j which should be updated in BoardManager
            BoardManager.instance.current_i = int.Parse(data.pack[3]);
            // set row i and column j which should be updated in BoardManager
            BoardManager.instance.current_j = int.Parse(data.pack[4]);
            //检查是什么类型的棋子落下
            // check the type of cell to update O or X
            if (data.pack[2].Equals("square"))
            {
                BoardManager.instance.SpawnSquare();
            }
            else
            {
                BoardManager.instance.SpawnX();
            }
            //此客户端的回合
            TicTacCanvasManager.instance.txtFooter.text = "Your move";

            myTurn = true;
        }
    }
Example #15
0
    //************************ Reciving Client Data ***************//


    void OnSelectingSuit(SocketUDPEvent data)
    {
        gameManagerScript.showSuitPnl = true;
    }
Example #16
0
 public void OnGotCard(SocketUDPEvent data)
 {
     gameManagerScript.gotCard(data.pack[1], data.pack[2]);
 }
Example #17
0
    public void onGotChal(SocketUDPEvent data)
    {
        GameObject player = GameObject.Find(myId);

        player.GetComponent <PlayerManager>().canChal = true;
    }
Example #18
0
 public void OnShowCard(SocketUDPEvent data)
 {
     gameManagerScript.showCardOnGround(int.Parse(data.pack[1]), data.pack[2], data.pack[3]);
 }
Example #19
0
 public void OnSetChalSuit(SocketUDPEvent data)
 {
     gameManagerScript.currntChalSuit = data.pack[1];
 }
Example #20
0
    public void OnGotThrow(SocketUDPEvent data)
    {
        GameObject player = GameObject.Find(myId);

        player.GetComponent <PlayerManager>().canThrow = true;
    }
Example #21
0
    void OnSuitSelected(SocketUDPEvent data)
    {
        gameManagerScript.colorSuit = data.pack[1];

        gameManagerScript.hideSuitPnl = true;
    }
Example #22
0
    /// <summary>
    /// Joins the local player in game.
    /// </summary>
    /// <param name="_data">Data.</param>
    public void OnJoinGame(SocketUDPEvent data)
    {
        /*
         * data.data.pack[0] = CALLBACK_NAME: "JOIN_SUCCESS" from server
         * data.data.pack[1] = id (local player id)
         * data.data.pack[2]= name (local player name)
         * data.data.pack[3] = position.x (local player position x)
         * data.data.pack[4] = position.y (local player position ...)
         * data.data.pack[5] = position.z
         * data. data.pack[6] = rotation.x
         * data.data.pack[7] = rotation.y
         * data.data.pack[8] = rotation.z
         * data.data.pack[9] = rotation.w
         */

        Debug.Log("Login successful, joining game");


        if (!myPlayer)
        {
            // take a look in PlayerManager.cs script
            PlayerManager newPlayer;

            if (UDPServer.instance.serverRunning)
            {
                // newPlayer = GameObject.Instantiate( local player avatar or model, spawn position, spawn rotation)
                newPlayer = GameObject.Instantiate(localPlayersPrefabs [0],
                                                   new Vector3(float.Parse(data.pack[3], CultureInfo.CurrentCulture), float.Parse(data.pack[4], CultureInfo.CurrentCulture),
                                                               float.Parse(data.pack[5], CultureInfo.CurrentCulture)), Quaternion.identity).GetComponent <PlayerManager> ();
            }
            else
            {
                // newPlayer = GameObject.Instantiate( local player avatar or model, spawn position, spawn rotation)
                newPlayer = GameObject.Instantiate(localPlayersPrefabs [0],
                                                   new Vector3(float.Parse(data.pack[3], CultureInfo.InvariantCulture), float.Parse(data.pack[4], CultureInfo.InvariantCulture),
                                                               float.Parse(data.pack[5], CultureInfo.InvariantCulture)), Quaternion.identity).GetComponent <PlayerManager> ();
            }


            Debug.Log("player instantiated");

            newPlayer.id = data.pack [1];

            //this is local player
            newPlayer.isLocalPlayer = true;

            //now local player online in the arena
            newPlayer.isOnline = true;



            //set local player's 3D text with his name
            newPlayer.SetPlayerName(data.pack[2]);


            //puts the local player on the list
            networkPlayers [data.pack [1]] = newPlayer;

            myPlayer = networkPlayers [data.pack[1]].gameObject;

            local_player_id = data.pack [1];

            //spawn cam
            camRig = GameObject.Instantiate(camRigPref, new Vector3(0f, 0f, -10f), Quaternion.identity);


            //hide the lobby menu (the input field and join buton)
            CanvasManager.instance.OpenScreen(3);

            CanvasManager.instance.CloseLoadingImg();

            CanvasManager.instance.lobbyCamera.GetComponent <Camera> ().enabled = false;

            gameIsRunning = true;

            CanvasManager.instance.CloseLoadingImg();

            //take a look in public IEnumerator WaitAnswer()
            tryJoinServer = false;

            // the local player now is logged
            onLogged = true;

            Debug.Log("player in game");

            newPlayer.gameObject.name = data.pack[1];

            //setting player pos
            newPlayer.gameObject.transform.position = spawnPoints[crntSpwnPlrNo].transform.position;

            crntSpwnPlrNo++;
        }
    }