コード例 #1
0
    private void OnServerReceiveClientInfo(NetworkMessage Msg)
    {
        if (Msg.conn.playerControllers.Count > 0)
        {
            PlayerController player = Msg.conn.playerControllers[0];
            if (player != null && player.gameObject != null)
            {
                JigsawPlayerController jigsawController = player.gameObject.GetComponent <JigsawPlayerController>();
                if (jigsawController != null)
                {
                    if (NetWorldState == null)
                    {
                        GenerateWorldState();
                    }
                    ClientInfoMsg     clientMsg   = Msg.ReadMessage <ClientInfoMsg>();
                    JigsawPlayerState playerState = NetWorldState.RegisterPlayer(clientMsg.Username);
                    jigsawController.PlayerState = playerState;
                    return;
                }
            }
        }
        ClientInfoMsg tmp = Msg.ReadMessage <ClientInfoMsg>();

        DeferredClientInfo.Add(Msg.conn.connectionId, tmp);
    }
コード例 #2
0
    private void UpdatePlayerNames()
    {
        string output = "";
        int    len    = NetWorldState.ConnectedPlayers.Count;

        for (int i = 0; i < len; ++i)
        {
            JigsawPlayerState player = NetWorldState.ConnectedPlayers[i];
            Color             clr    = player.UserColor;
            output += string.Format("<color=#{0:X2}{1:X2}{2:X2}FF>{3}</color>{4}",
                                    (byte)(255.0f * clr.r), (byte)(255.0f * clr.g), (byte)(255.0f * clr.b),
                                    player.Username,
                                    (i < len - 1) ? "\n" : "");
        }
        DisplayText.text = output;

        Vector2 textRectSize = TextRect.sizeDelta;

        textRectSize.y     = TextRectLineSize * len;
        TextRect.sizeDelta = textRectSize;

        Vector2 panelSize = PanelRect.sizeDelta;

        panelSize.y         = PanelRectBaseSize + textRectSize.y;
        PanelRect.sizeDelta = panelSize;
    }
コード例 #3
0
    public JigsawPlayerState RegisterPlayer(string Username)
    {
        JigsawPlayerState state = new JigsawPlayerState();

        state.Id = NextAssignedId;
        ++NextAssignedId;
        state.Username  = Username;
        state.UserColor = AssignColor();

        ConnectedPlayers.Add(state);
        Debug.LogFormat("Registered player {0} with Id {1}; total {2} players", Username, state.Id, ConnectedPlayers.Count);
        return(state);
    }
コード例 #4
0
    public override void OnServerAddPlayer(NetworkConnection conn, short playerControllerId)
    {
        if (NetWorldState == null)
        {
            GenerateWorldState();
        }

        var player = (GameObject)GameObject.Instantiate(playerPrefab, Vector3.zero, Quaternion.identity);

        NetworkServer.AddPlayerForConnection(conn, player, playerControllerId);
        Debug.Log("Client has requested to get his player added to the game");

        ClientInfoMsg clientMsg;

        if (DeferredClientInfo.TryGetValue(conn.connectionId, out clientMsg))
        {
            JigsawPlayerState      playerState      = NetWorldState.RegisterPlayer(clientMsg.Username);
            JigsawPlayerController jigsawController = player.GetComponent <JigsawPlayerController>();
            jigsawController.PlayerState = playerState;
            DeferredClientInfo.Remove(conn.connectionId);
        }
    }
コード例 #5
0
 public void DeregisterPlayer(JigsawPlayerState State)
 {
     ConnectedPlayers.Remove(State);
     UnassignColor(State.UserColor);
     Debug.LogFormat("Deregistered player {0} with Id {1}; total {2} players", State.Username, State.Id, ConnectedPlayers.Count);
 }