/// <summary>
        /// Render a UI for the room.   Override to provide your on UI
        /// </summary>
        public virtual void OnGUI()
        {
            if (!showRoomGUI)
            {
                return;
            }

            NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager;

            if (room)
            {
                if (!room.showRoomGUI)
                {
                    return;
                }

                if (!NetworkManager.IsSceneActive(room.RoomScene))
                {
                    return;
                }

                DrawPlayerReadyState();
                DrawPlayerReadyButton();
            }
        }
Exemplo n.º 2
0
        public void RpcDisableRoomPlayer()
        {
            NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager;

            if (room != null)
            {
                room.DisableRoomPlayers();
            }
        }
        public void CmdChangeReadyState(bool readyState)
        {
            readyToBegin = readyState;
            NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager;

            if (room != null)
            {
                room.ReadyStatusChanged();
            }
        }
        public void ChangePlayerName(string playName)
        {
            playerName = playName;
            NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager;

            if (room != null)
            {
                room.NameStatusChanged(this);
            }
        }
Exemplo n.º 5
0
        public void RpcDisconnectRoomPlayer()
        {
            NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager;

            if (room != null)
            {
                room.roomSlots.Remove(this);
                room.roomPlayers--;
                if (readyToBegin)
                {
                    room.playersReady--;
                }
                room.onRoomStatusChanged.Invoke(false);
            }
        }
Exemplo n.º 6
0
        public override void OnStartClient()
        {
            if (LogFilter.Debug)
            {
                Debug.LogFormat("OnStartClient {0}", SceneManager.GetActiveScene().name);
            }

            base.OnStartClient();

            networkRoomManager = NetworkManager.singleton as NetworkRoomManager;

            gameObject.tag = "NetworkRoomPlayer";

            gameObject.name = "RoomPlayer_Client" + clientIndex;

            // UpdateLocalPlayerCount();

            Debug.Log("clientIndex: " + clientIndex + " ,localPlayerCount: " + localPlayerCount, gameObject);

            // load additional local players from non-local clients

            /*
             * if (isLocalPlayer && isServer)
             * {
             *  Debug.Log("isLocalPlayer && isServer");
             *  AddLocalPlayer();
             * }
             * else if (isLocalPlayer && !isServer)
             * {
             *  Debug.Log("isLocalPlayer && !isServer");
             *  CmdAddLocalPlayer();
             * }
             * Debug.Log("asd && !zxc");
             */

            if (!isServer)
            {
                CmdAddLocalPlayer();
            }
            else
            {
                AddLocalPlayer();
            }
        }
Exemplo n.º 7
0
        /// <summary>
        /// Do not use Start - Override OnStartrHost / OnStartClient instead!
        /// </summary>
        public void Start()
        {
            roomManager = FindObjectOfType <NetworkRoomManager>();
            if (roomManager != null)
            {
                // NetworkRoomPlayer object must be set to DontDestroyOnLoad along with NetworkRoomManager
                // in server and all clients, otherwise it will be respawned in the game scene which would
                // have undesireable effects.
                if (roomManager.dontDestroyOnLoad)
                {
                    DontDestroyOnLoad(gameObject);
                }

                OnClientEnterRoom();
            }
            else
            {
                Debug.LogError("RoomPlayer could not find a NetworkRoomManager. The RoomPlayer requires a NetworkRoomManager object to function. Make sure that there is one in the scene.");
            }
        }
Exemplo n.º 8
0
        /// <summary>
        /// Render a UI for the room.   Override to provide your on UI
        /// </summary>
        public virtual void OnGUI()
        {
            if (!showRoomGUI)
            {
                return;
            }

            NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager;

            if (room)
            {
                if (!room.showRoomGUI)
                {
                    return;
                }

                if (SceneManager.GetActiveScene().name != room.RoomScene)
                {
                    return;
                }

                GUILayout.BeginArea(new Rect(20f + (index * 100), 200f, 90f, 130f));

                GUILayout.Label($"Player [{index + 1}]");

                if (readyToBegin)
                {
                    GUILayout.Label("Ready");
                }
                else
                {
                    GUILayout.Label("Not Ready");
                }

                if (((isServer && index > 0) || isServerOnly) && GUILayout.Button("REMOVE"))
                {
                    // This button only shows on the Host for all players other than the Host
                    // Host and Players can't remove themselves (stop the client instead)
                    // Host can kick a Player this way.
                    GetComponent <NetworkIdentity>().connectionToClient.Disconnect();
                }

                GUILayout.EndArea();

                if (NetworkClient.active && isLocalPlayer)
                {
                    GUILayout.BeginArea(new Rect(20f, 300f, 120f, 20f));

                    if (readyToBegin)
                    {
                        if (GUILayout.Button("Cancel"))
                        {
                            CmdChangeReadyState(false);
                        }
                    }
                    else
                    {
                        if (GUILayout.Button("Ready"))
                        {
                            CmdChangeReadyState(true);
                        }
                    }

                    GUILayout.EndArea();
                }
            }
        }
Exemplo n.º 9
0
        //CA::::
        void showBanners()
        {
            NetworkRoomManager room = NetworkManager.singleton as NetworkRoomManager;

            if (room && playerBanner != null)
            {
                if (!NetworkManager.IsSceneActive(room.RoomScene))
                {
                    return;
                }

                /*DRAW PLAYER READY STATE*/
                playerBanner.transform.GetChild(1).GetComponent <Text>().text = playerName;
                if (readyToBegin)
                {
                    playerBanner.transform.GetChild(2).transform.GetChild(0).GetComponent <Text>().text = "Ready!";
                    var newColorBlock = playerBanner.transform.GetChild(2).gameObject.GetComponent <Button>().colors;
                    newColorBlock.disabledColor = new Color(0.1826273f, 0.6792453f, 0.2567928f, 1);
                    playerBanner.transform.GetChild(2).gameObject.GetComponent <Button>().colors = newColorBlock;
                }
                else
                {
                    playerBanner.transform.GetChild(2).transform.GetChild(0).GetComponent <Text>().text = "Not Ready";
                    var newColorBlock = playerBanner.transform.GetChild(2).gameObject.GetComponent <Button>().colors;
                    newColorBlock.disabledColor = new Color(0.745283f, 0.1089801f, 0.1210705f, 1);
                    playerBanner.transform.GetChild(2).gameObject.GetComponent <Button>().colors = newColorBlock;
                }

                if ((isServer && index > 0) || isServerOnly)
                {
                    if (playerBanner.transform.GetChild(3).gameObject != null)
                    {
                        playerBanner.transform.GetChild(3).gameObject.SetActive(true);
                        playerBanner.transform.GetChild(3).gameObject.GetComponent <Button>().onClick.AddListener(btnKick);
                    }
                }
                else
                {
                    if (playerBanner.transform.GetChild(3).gameObject != null)
                    {
                        playerBanner.transform.GetChild(3).gameObject.SetActive(false);
                    }
                }

                /*DRAW PLAYER READY BUTTON*/
                if (NetworkClient.active && isLocalPlayer)
                {
                    if (readyToBegin)
                    {
                        playerBanner.transform.GetChild(2).transform.GetChild(0).GetComponent <Text>().text = "Cancel";
                        playerBanner.transform.GetChild(2).gameObject.GetComponent <Button>().onClick.AddListener(btnNotReady);
                    }
                    else
                    {
                        playerBanner.transform.GetChild(2).transform.GetChild(0).GetComponent <Text>().text = "Ready!";
                        playerBanner.transform.GetChild(2).gameObject.GetComponent <Button>().onClick.AddListener(btnReady);
                    }
                }
                else
                {
                    playerBanner.transform.GetChild(2).GetComponent <Button>().interactable = false;
                }
            }

            void btnKick()
            {
                GetComponent <NetworkIdentity>().connectionToClient.Disconnect();
            }

            void btnReady()
            {
                CmdChangeReadyState(true);
            }

            void btnNotReady()
            {
                CmdChangeReadyState(false);
            }
        }