public void OnGUI()
    {
        if (autoStart || noGUI)
        {
            return;
        }

        float screenIncrement;
        GUI.Box(new Rect((Screen.width/2)-300,10,600,35), "Welcome to the Cipher Prime Master Server. You are playing " + gameName + ".");

        switch (_loginPhase)
        {
            case (LoginPhase.START):

                screenIncrement = Screen.width/10f;

                if(GUI.Button(new Rect(Screen.width/4-screenIncrement,Screen.height/2-25,screenIncrement*2,50),"Start Game"))
                {
                    Debug.Log("Starting server named: " + _instanceName);
                    StartServer();
                }

                GUI.Label(new Rect(Screen.width/4-screenIncrement,Screen.height/2-200,screenIncrement*2,25),"Game Name");
                GUI.Label(new Rect(Screen.width/4-screenIncrement,Screen.height/2-150,screenIncrement*2,25),"# Players");
                GUI.Label(new Rect(Screen.width/4-screenIncrement,Screen.height/2-100,screenIncrement*2,25),"Description");
                _instanceName = GUI.TextField(new Rect(Screen.width/4-screenIncrement,Screen.height/2-175,screenIncrement*2,25),_instanceName);
                _numPlayers = GUI.TextField(new Rect(Screen.width/4-screenIncrement,Screen.height/2-125,screenIncrement,25),_numPlayers);
                _instanceMessage = GUI.TextField(new Rect(Screen.width/4-screenIncrement,Screen.height/2-75,screenIncrement*3,25),_instanceMessage);

                if(GUI.Button(new Rect(3*Screen.width/4-screenIncrement,Screen.height/2-25,screenIncrement*2,50), "Find Game"))
                {
                    Debug.Log("Refreshing server list.");
                    RequestHostList();
                }

            break;

            case (LoginPhase.LOBBY):

                screenIncrement = Screen.width/10f;
                if(GUI.Button(new Rect(10,10,screenIncrement*2,50),"Return"))
                {
                    if (Network.isServer)
                    {
                        _loginPhase = LoginPhase.SERVER;
                    } else {
                        _loginPhase = LoginPhase.START;
                    }
                }

                if(GUI.Button(new Rect(Screen.width-(screenIncrement*2)-10,10,screenIncrement*2,50), "Refresh Server List"))
                {
                    Debug.Log("Refreshing server list.");
                    RequestHostList();
                }

                if (_hostData == null) return;

                GUI.Box(new Rect((Screen.width/2)-200,40,400,35), "There are currently " + _hostData.Length + " servers with " + _totalPlayerCount + " players.");

                screenIncrement = Screen.width/6;
                for (int i = 0; i < 6; i++)
                {
                    GUI.Label(new Rect(10+i*screenIncrement,130,100,25),_gameInfoLabels[i]);
                }

                // gameName, connectedPlayers, playerLimit, ip, port, comment
                for (int i = 0; i < 10; i++)
                {
                    if(i < _hostData.Length )
                    {
                        GUI.Label(new Rect(10, 150 + i * 40,screenIncrement,25),_hostData[i].ip[0]);
                        GUI.Label(new Rect(10+screenIncrement*1, 150 + i * 40,screenIncrement,25),_hostData[i].port.ToString());
                        GUI.Label(new Rect(10+screenIncrement*2, 150 + i * 40,screenIncrement,25),_hostData[i].connectedPlayers.ToString() + "/" + _hostData[i].playerLimit.ToString());
                        GUI.Label(new Rect(10+screenIncrement*3, 150 + i * 40,screenIncrement,25),_hostData[i].gameName);
                        GUI.Label(new Rect(10+screenIncrement*4, 150 + i * 40,screenIncrement,25),_hostData[i].comment);

                        /*
                        if (_hostData[i].ip[0] == Network.player.ipAddress)
                        {
                            if(GUI.Button(new Rect(screenIncrement*5-10, 150 + i * 40, screenIncrement,25),"Join Your Server As Client"))
                            {
                                //_loginPhase = LoginPhase.SERVER;
                                Debug.Log("Joining " + _hostData[i].gameName);
                                _connectedHost = _hostData[i];
                                ConnectToServer(_hostData[i]);

                            }

                        } else {

                        */
                        if(GUI.Button(new Rect(screenIncrement*5-10, 150 + i * 40, screenIncrement,25),"Join Server"))
                        {
                            Debug.Log("Joining " + _hostData[i].gameName);
                            _connectedHost = _hostData[i];
                            ConnectToServer(_hostData[i]);
                        }

                    } else {

                        //TODO Remove Spoof data.
                        /*
                        GUI.Label(new Rect(10, 150 + i * 40,screenIncrement,25),"Spoof Data Server" + i);
                        GUI.Label(new Rect(10+screenIncrement*1, 150 + i * 40,screenIncrement,25),"Spoof Data Server" + i);
                        GUI.Label(new Rect(10+screenIncrement*2, 150 + i * 40,screenIncrement,25),"Spoof Data Server" + i);
                        GUI.Label(new Rect(10+screenIncrement*3, 150 + i * 40,screenIncrement,25),"Spoof Data Server" + i);
                        GUI.Label(new Rect(10+screenIncrement*4, 150 + i * 40,screenIncrement,25),"Spoof Data Server" + i);
                        */
                    }

                }

            break;

            case (LoginPhase.SERVER):

                screenIncrement = Screen.width/10f;

                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 10, screenIncrement*4,25),"Game started. Waiting for partner...");
                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 35, screenIncrement*4,25),"Game name: " + _instanceName);
                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 60, screenIncrement*4,25),"Number of players: " + (Network.connections.Length + 1 ) + "/" + (Network.maxConnections + 1));
                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 85, screenIncrement*4,screenIncrement*4),"Server description: " + _instanceMessage);

                if (Network.connections.Length > 0)
                {
                    if(GUI.Button(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2,screenIncrement*4,50),"Start Game"))
                    {
                        Debug.Log("Starting game...");
                        Network.Instantiate(networkedSceneLoader, transform.position,Quaternion.identity,0);

                    }
                } else {
                    GUI.Box(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2,screenIncrement*4,50),"Waiting for partner...");
                }

                if (GUI.Button(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2+60,screenIncrement*4,50),"Close Game"))
                {
                    Debug.Log("Shutting down server.");
                    Network.Disconnect();
                        MasterServer.UnregisterHost();
                    _loginPhase = LoginPhase.START;
                    gameReadyMessage = "Enter Game";
                }

                //TODO will this be allowed?
                /*
                if (GUI.Button(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2+120,screenIncrement*4,50),"View Other Games"))
                {
                    Debug.Log("Viewing server list.");
                    RequestHostList();
                    _loginPhase = LoginPhase.LOBBY;

                }
                */

            break;

            case (LoginPhase.CLIENT):
                screenIncrement = Screen.width/10f;

                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 10, screenIncrement*4,25),"Server started.");
                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 35, screenIncrement*4,25),"Server name: " + _instanceName);
                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 60, screenIncrement*4,25),"Number of players: " + (_connectedHost.connectedPlayers+ 1) + "/" + (_connectedHost.playerLimit));
                GUI.Label(new Rect((Screen.width/2)-((screenIncrement*4)/2), screenIncrement + 85, screenIncrement*4,screenIncrement*4),"Server description: " + _instanceMessage);

                /*
                if(GUI.Button(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2,screenIncrement*4,50),gameReadyMessage))
                {
                    Debug.Log("Waiting for server.");
                    //Application.LoadLevel(sceneToLoad);
                    gameReadyMessage = "Waiting for Server Start.";
                }
                */
                GUI.Button(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2,screenIncrement*4,50),"Waiting for game start...");

                if (GUI.Button(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2+60,screenIncrement*4,50),"Leave Game"))
                {
                    Debug.Log("Shutting down server.");
                    Network.Disconnect();
                        MasterServer.UnregisterHost();
                    _loginPhase = LoginPhase.START;
                }
                /*
                if (GUI.Button(new Rect((Screen.width/2)-((screenIncrement*4)/2),Screen.height/2+120,screenIncrement*4,50),"View Other Servers"))
                {
                    Debug.Log("Viewing server list.");
                    RequestHostList();
                    _loginPhase = LoginPhase.LOBBY;

                }
                */

            break;
        }
    }
 public void OnConnectedToServer()
 {
     Debug.Log("OnConnectedToServer.");
     _loginPhase = LoginPhase.CLIENT;
     _playerManager.SetPlayerTwo();
 }
 public void OnConnectedToServer()
 {
     Debug.Log("OnConnectedToServer.");
     _loginPhase = LoginPhase.CLIENT;
 }
    public void OnMasterServerEvent(MasterServerEvent msEvent)
    {
        switch (msEvent)
        {
            case (MasterServerEvent.RegistrationSucceeded):
                Debug.Log("RegistrationSucceeded, waiting for player.");
                _loginPhase = LoginPhase.SERVER;
            break;

            case (MasterServerEvent.HostListReceived):
                _hostData = MasterServer.PollHostList();
                Debug.Log("HostList received...");
                Debug.Log("There are " + _hostData.Length + " servers.");
                _loginPhase = LoginPhase.LOBBY;

                if (autoStart)
                {
                    if (_hostData.Length == 0)
                    {
                        StartServer();
                    } else if (_hostData.Length > 0) {
                        foreach(HostData host in _hostData)
                        {
                            if (host.connectedPlayers == 1)
                            {
                                ConnectToServer(host);
                                return;
                            } else if (host.connectedPlayers > 1) {
                                continue;
                            }
                        }
                        StartServer();
                    }
                }
            break;
        }
    }
    public void OnMasterServerEvent(MasterServerEvent msEvent)
    {
        switch (msEvent)
        {
            case (MasterServerEvent.RegistrationSucceeded):
                Debug.Log("RegistrationSucceeded, waiting for player.");
                _loginPhase = LoginPhase.SERVER;
            break;

            case (MasterServerEvent.HostListReceived):
                _hostData = MasterServer.PollHostList();
                Debug.Log("HostList received...");
                Debug.Log("There are " + _hostData.Length + " servers.");
                _loginPhase = LoginPhase.LOBBY;
            break;
        }
    }