Beispiel #1
0
    private void OnGUI()
    {
        const float width        = 250f;
        const float buttonHeight = 35f;
        const float height       = 100f + buttonHeight * 3f;

        float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile();

        GUI.color = Color.white;
        GUILayout.BeginArea(
            new Rect(
                Screen.width / 2f / scaleFactor - width / 2f,
                Screen.height / 2f / scaleFactor - height / 2f,
                width,
                height),
            "Android Bluetooth Multiplayer Demo",
            "Window");
        GUILayout.BeginVertical();

        GUILayout.Space(10);
        if (GUILayout.Button("Basic multiplayer", GUILayout.Height(buttonHeight)))
        {
            CameraFade.StartAlphaFade(Color.black, false, 0.25f, 0f, () => Application.LoadLevel("Scene_Game"));
        }

//			if (GUILayout.Button("Device discovery", GUILayout.Height(buttonHeight)))
//				CameraFade.StartAlphaFade(Color.black, false, 0.25f, 0f, () => Application.LoadLevel("BluetoothDiscoveryDemo"));
//
//			if (GUILayout.Button("Basic RPC file transfer", GUILayout.Height(buttonHeight)))
//				CameraFade.StartAlphaFade(Color.black, false, 0.25f, 0f, () => Application.LoadLevel("BluetoothFileTransferDemo"));

        GUILayout.Space(15);
        GUI.backgroundColor = new Color(1f, 0.6f, 0.6f, 1f);
        if (GUILayout.Button("Quit", GUILayout.Height(buttonHeight)))
        {
            CameraFade.StartAlphaFade(Color.black, false, 0.25f, 0f, Application.Quit);
        }

        GUILayout.EndVertical();
        GUILayout.EndArea();
    }
        private void OnGUI()
        {
            float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile();

            // If initialization was successfull, showing the buttons
            if (_initResult)
            {
                // If there is no current Bluetooth connectivity
                BluetoothMultiplayerMode currentMode = AndroidBluetoothMultiplayer.GetCurrentMode();
                if (currentMode == BluetoothMultiplayerMode.None)
                {
                    if (GUI.Button(new Rect(10, 10, 150, 50), "Create server"))
                    {
                        // If Bluetooth is enabled, then we can do something right on
                        if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled())
                        {
                            AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120);
                            Network.Disconnect(); // Just to be sure
                            AndroidBluetoothMultiplayer.StartServer(kPort);
                        }
                        else
                        {
                            // Otherwise we have to enable Bluetooth first and wait for callback
                            _desiredMode = BluetoothMultiplayerMode.Server;
                            AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120);
                        }
                    }

                    if (GUI.Button(new Rect(170, 10, 150, 50), "Connect to server"))
                    {
                        // If Bluetooth is enabled, then we can do something right on
                        if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled())
                        {
                            Network.Disconnect();                         // Just to be sure
                            AndroidBluetoothMultiplayer.ShowDeviceList(); // Open device picker dialog
                        }
                        else
                        {
                            // Otherwise we have to enable Bluetooth first and wait for callback
                            _desiredMode = BluetoothMultiplayerMode.Client;
                            AndroidBluetoothMultiplayer.RequestEnableBluetooth();
                        }
                    }
                }
                else
                {
                    // Stop all networking
                    if (GUI.Button(new Rect(10, 10, 150, 50), currentMode == BluetoothMultiplayerMode.Client ? "Disconnect" : "Stop server"))
                    {
                        if (Network.peerType != NetworkPeerType.Disconnected)
                        {
                            Network.Disconnect();
                        }

                        AndroidBluetoothMultiplayer.Stop();
                    }
                }

                GUI.contentColor    = Color.black;
                GUI.enabled         = currentMode == BluetoothMultiplayerMode.None;
                _isStressTestMode   = GUI.Toggle(new Rect(10, 70, 250, 30), _isStressTestMode, " Stress-test mode (" + kStressModeActors + " actors)");
                _isUseInterpolation = GUI.Toggle(new Rect(10, 100, 250, 30), _isUseInterpolation, " Use interpolation (smoothen movement)");
                GUI.enabled         = true;
                GUI.contentColor    = Color.white;
            }
            else
            {
                // Show a message if initialization failed for some reason
                GUI.contentColor = Color.black;
                GUI.Label(
                    new Rect(10, 10, Screen.width / scaleFactor - 10, 50),
                    "Bluetooth not available. Are you running this on Bluetooth-capable " +
                    "Android device and AndroidManifest.xml is set up correctly?");
            }

            DrawBackButton(scaleFactor);
        }
        // Update is called once per frame
        private void OnGUI()
        {
            float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile();

            // If initialization was successfull, showing the buttons
            if (_initResult)
            {
                // Show log
                float logY = 80f;
                if (_receivedTexture != null)
                {
                    logY += kTextureSize;
                }

                GUILayout.Space(logY);
                BluetoothExamplesTools.TouchScroll(ref _logPosition);
                _logPosition = GUILayout.BeginScrollView(
                    _logPosition,
                    GUILayout.MaxHeight(Screen.height / scaleFactor - logY),
                    GUILayout.MinWidth(Screen.width / scaleFactor - 10f / scaleFactor),
                    GUILayout.ExpandHeight(false));
                GUI.contentColor = Color.black;
                GUILayout.Label(_log, GUILayout.ExpandHeight(true), GUILayout.MaxWidth(Screen.width / scaleFactor));
                GUI.contentColor = Color.white;
                GUILayout.EndScrollView();

                // If there is no current Bluetooth connectivity
                BluetoothMultiplayerMode currentMode = AndroidBluetoothMultiplayer.GetCurrentMode();
                if (currentMode == BluetoothMultiplayerMode.None)
                {
                    if (GUI.Button(new Rect(10, 10, 150, 50), "Create server"))
                    {
                        // If Bluetooth is enabled, then we can do something right on
                        if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled())
                        {
                            AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120);
                            Network.Disconnect(); // Just to be sure
                            AndroidBluetoothMultiplayer.StartServer(kPort);
                        }
                        else
                        {
                            // Otherwise we have to enable Bluetooth first and wait for callback
                            _desiredMode = BluetoothMultiplayerMode.Server;
                            AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120);
                        }
                    }

                    if (GUI.Button(new Rect(170, 10, 150, 50), "Connect to server"))
                    {
                        // If Bluetooth is enabled, then we can do something right on
                        if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled())
                        {
                            Network.Disconnect();                         // Just to be sure
                            AndroidBluetoothMultiplayer.ShowDeviceList(); // Open device picker dialog
                        }
                        else
                        {
                            // Otherwise we have to enable Bluetooth first and wait for callback
                            _desiredMode = BluetoothMultiplayerMode.Client;
                            AndroidBluetoothMultiplayer.RequestEnableBluetooth();
                        }
                    }
                }
                else
                {
                    // Stop all networking
                    if (GUI.Button(new Rect(10, 10, 150, 50), currentMode == BluetoothMultiplayerMode.Client ? "Disconnect" : "Stop server"))
                    {
                        if (Network.peerType != NetworkPeerType.Disconnected)
                        {
                            Network.Disconnect();
                        }
                    }

                    // Display file transfer UI
                    if (Network.peerType != NetworkPeerType.Disconnected && (Network.isClient || Network.connections.Length > 0) && _fileTransfer != null)
                    {
                        GUI.enabled = _fileTransfer.TransferState == FileTransfer.FileTransferState.None;
                        if (GUI.Button(new Rect(Screen.width / scaleFactor - 160, 10, 150, 50), "Send file"))
                        {
                            Color32[] image = GenerateTexture(kTextureSize);

                            byte[] colorBytes = Color32ArrayToByteArray(image);
                            _fileTransfer.TransmitFile(colorBytes);
                        }
                        GUI.enabled = true;

                        // Display file transfer status
                        string status = null;
                        switch (_fileTransfer.TransferState)
                        {
                        case FileTransfer.FileTransferState.Receiving:
                            status =
                                string.Format("Receiving: {0:F1}% ({1} out of {2} bytes)",
                                              _transferSize / (float)_transferTotalSize * 100f,
                                              _transferSize,
                                              _transferTotalSize);
                            break;

                        case FileTransfer.FileTransferState.Transmitting:
                            status =
                                string.Format("Transmitting: {0:F1}% ({1} out of {2} bytes)",
                                              _transferSize / (float)_transferTotalSize * 100f,
                                              _transferSize,
                                              _transferTotalSize);
                            break;

                        case FileTransfer.FileTransferState.None:
                            status = "Idle.";
                            break;
                        }

                        GUI.contentColor = Color.black;
                        GUI.Label(new Rect(10, 65, Screen.width, 20), status);

                        GUI.contentColor = Color.white;
                        if (_receivedTexture != null)
                        {
                            GUI.Label(new Rect(10, 80, kTextureSize, kTextureSize), _receivedTexture);
                        }
                    }
                }
            }
            else
            {
                // Show a message if initialization failed for some reason
                GUI.contentColor = Color.black;
                GUI.Label(
                    new Rect(10, 10, Screen.width / scaleFactor - 10, 50),
                    "Bluetooth not available. Are you running this on Bluetooth-capable " +
                    "Android device and AndroidManifest.xml is set up correctly?");
            }

            DrawBackButton(scaleFactor);
        }
Beispiel #4
0
    public void Init()
    {
        app = App.Instance;
        switch (app.controller.gameMode.mode)
        {
        case GameModeController.Mode.multiplayer_bluetooth_client:
            ServerClientMultiplayerWindow.SetActive(true);
            ServerClinetInfo.text = "Connecting to server...";
            break;

        case GameModeController.Mode.multiplayer_bluetooth_server:
            ServerClientMultiplayerWindow.SetActive(true);
            ServerClinetInfo.text = "Waiting for player...";
            break;
        }

        homeButton.onClick.AddListener(Home);
        // Setting the UUID. Must be unique for every application
        _initResult = AndroidBluetoothMultiplayer.Initialize("8ce255c0-200a-11e0-ac64-0800200c9a66");

        // Enabling verbose logging. See log cat!
        AndroidBluetoothMultiplayer.SetVerboseLog(true);

        // Registering the event delegates
        AndroidBluetoothMultiplayer.ListeningStarted            += OnBluetoothListeningStarted;
        AndroidBluetoothMultiplayer.ListeningStopped            += OnBluetoothListeningStopped;
        AndroidBluetoothMultiplayer.AdapterEnabled              += OnBluetoothAdapterEnabled;
        AndroidBluetoothMultiplayer.AdapterEnableFailed         += OnBluetoothAdapterEnableFailed;
        AndroidBluetoothMultiplayer.AdapterDisabled             += OnBluetoothAdapterDisabled;
        AndroidBluetoothMultiplayer.DiscoverabilityEnabled      += OnBluetoothDiscoverabilityEnabled;
        AndroidBluetoothMultiplayer.DiscoverabilityEnableFailed += OnBluetoothDiscoverabilityEnableFailed;
        AndroidBluetoothMultiplayer.ConnectedToServer           += OnBluetoothConnectedToServer;
        AndroidBluetoothMultiplayer.ConnectionToServerFailed    += OnBluetoothConnectionToServerFailed;
        AndroidBluetoothMultiplayer.DisconnectedFromServer      += OnBluetoothDisconnectedFromServer;
        AndroidBluetoothMultiplayer.ClientConnected             += OnBluetoothClientConnected;
        AndroidBluetoothMultiplayer.ClientDisconnected          += OnBluetoothClientDisconnected;
        AndroidBluetoothMultiplayer.DevicePicked += OnBluetoothDevicePicked;

        int modeIndex = SaveDataController.Instance.Data.mode;

        switch (modeIndex)
        {
        case 1:
            this.mode = Mode.single;
            break;

        case 2:
            this.mode = Mode.multiplayer_local;
            break;

        case 3:
            this.mode = Mode.multiplayer_bluetooth_server;
            break;

        case 4:
            this.mode = Mode.multiplayer_bluetooth_client;
            break;
        }

        float scaleFactor = BluetoothExamplesTools.UpdateScaleMobile();

        // If initialization was successfull, showing the buttons
        if (_initResult)
        {
            // If there is no current Bluetooth connectivity
            BluetoothMultiplayerMode currentMode = AndroidBluetoothMultiplayer.GetCurrentMode();
            if (currentMode == BluetoothMultiplayerMode.None)
            {
                if (mode == Mode.multiplayer_bluetooth_server)
                {
                    // If Bluetooth is enabled, then we can do something right on
                    if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled())
                    {
                        AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120);
                        Network.Disconnect(); // Just to be sure
                        AndroidBluetoothMultiplayer.StartServer(kPort);
                    }
                    else
                    {
                        // Otherwise we have to enable Bluetooth first and wait for callback
                        _desiredMode = BluetoothMultiplayerMode.Server;
                        AndroidBluetoothMultiplayer.RequestEnableDiscoverability(120);
                    }
                    Debug.Log("Server");
                }

                if (mode == Mode.multiplayer_bluetooth_client)
                {
                    // If Bluetooth is enabled, then we can do something right on
                    if (AndroidBluetoothMultiplayer.GetIsBluetoothEnabled())
                    {
                        Network.Disconnect();                         // Just to be sure
                        AndroidBluetoothMultiplayer.ShowDeviceList(); // Open device picker dialog
                    }
                    else
                    {
                        // Otherwise we have to enable Bluetooth first and wait for callback
                        _desiredMode = BluetoothMultiplayerMode.Client;
                        AndroidBluetoothMultiplayer.RequestEnableBluetooth();
                    }
                    Debug.Log("Client");
                }
            }
            else
            {
                Debug.Log("Bluetooth activated before Init");
            }

            /*if (currentMode == BluetoothMultiplayerMode.None)
             * {
             *  OnBackToMenu();
             * }
             * else
             * {
             *  started = true;
             * }*/
            started = true;
            //SetupGame();
        }
        else
        {
            // Show a message if initialization failed for some reason
            Debug.Log("Bluetooth not available. Are you running this on Bluetooth-capable " +
                      "Android device and AndroidManifest.xml is set up correctly?");
        }
    }