Ejemplo n.º 1
0
    // Update is called once per frame
    void Update()
    {
        /*if (Input.GetKeyDown(KeyCode.F3) && !MonobitNetwork.isHost)
         * {
         *  _monobitView.RPC("LoadStageRequest", MonobitTargets.Host);
         * }
         *
         * //エスケープキーでゲームとチャットを切り替え
         * if (Input.GetKeyDown(KeyCode.Escape))
         *  _InPlay = !_InPlay;
         */
        //サーバーに未接続のとき自動で接続
        if (!MonobitNetwork.isConnect)
        {
            MonobitNetwork.autoJoinLobby = true;
            MonobitNetwork.ConnectServer("SimpleServer");
        }
        else
        {
            MonobitNetwork.CreateRoom("test");
            //部屋に入ったときにプレイヤーを生成

            /*if (MonobitNetwork.inRoom && _player == null)
             * {
             *  _player = MonobitNetwork.Instantiate("unitychan 1", Vector3.zero, Quaternion.identity, 0);
             *  _player.transform.position = new Vector3(Random.Range(10, 20), 1f, Random.Range(-15, 20));
             *  _cameraCtrl.target = _player.transform;
             * }*/
        }
    }
Ejemplo n.º 2
0
    private void Update()
    {
        //--------- ここはチャットのために入室処理をしているが、実際は別のUIで一回だけ処理する必要がある
        //--------- じゃないと、部屋ができるまでの間に結構なエラーを吐く
        if (!MonobitNetwork.isConnect)
        {
            MonobitNetwork.autoJoinLobby = true;
            MonobitNetwork.ConnectServer("ChatServer");
        }
        if (!MonobitNetwork.inRoom)
        {
            //サーバ上の部屋を全取得
            RoomData[] _roomDatas = MonobitNetwork.GetRoomData();
            //部屋が1つでもあるなら
            if (_roomDatas.Length >= 1)
            {
                //1つ目の部屋に入る
                MonobitNetwork.JoinRoom(_roomDatas[0].name);
            }
            else
            {
                Debug.Log("部屋作る");
                //「ChatTest」という名前で部屋を作る
                MonobitNetwork.CreateRoom("ChatTest");
            }
        }


        if (MonobitNetwork.inRoom && Input.GetKeyDown(KeyCode.J))
        {
            Debug.Log("送るよ");
            SEND(new ChatUSER("sonoda"), "こんにちは");
        }
    }
Ejemplo n.º 3
0
        /**
         * ルーム作成&入室設定.
         */
        private void OnGUI_CreateAndJoinRoom()
        {
            // 任意の名称を持つルームを作成する
            if (GUILayout.Button("Create Room", GUILayout.Width(150)))
            {
                // カスタムルームパラメータから、ロビー送信パラメータを抽出(とりあえず全部送信するようにする)
                string[] customRoomParametersForLobby = new string[this.customRoomParam.Keys.Count];
                int      keyIndex = 0;
                foreach (string key in this.customRoomParam.Keys)
                {
                    customRoomParametersForLobby[keyIndex] = key;
                    keyIndex++;
                }

                RoomSettings roomSettings = new RoomSettings()
                {
                    isVisible       = this.isVisible,
                    isOpen          = true,
                    maxPlayers      = this.maxPlayers,
                    roomParameters  = this.customRoomParam,
                    lobbyParameters = customRoomParametersForLobby
                };

                MonobitNetwork.CreateRoom(null, roomSettings, null);
            }

            // カスタムルームパラメータと一致するランダム入室
            if (GUILayout.Button("Join Room", GUILayout.Width(150)))
            {
                MonobitNetwork.JoinRandomRoom(this.customRoomParam, 0);
            }
        }
Ejemplo n.º 4
0
    // Update is called once per frame
    void Update()
    {
        if (!MonobitNetwork.isConnect)
        {
            MonobitNetwork.autoJoinLobby = true;
            MonobitNetwork.ConnectServer("testServer");
        }
        if (!MonobitNetwork.inRoom)
        {
            //サーバ上の部屋を全取得
            RoomData[] _roomDatas = MonobitNetwork.GetRoomData();
            //部屋が1つでもあるなら
            if (_roomDatas.Length >= 1)
            {
                //1つ目の部屋に入る
                MonobitNetwork.JoinRoom(_roomDatas[0].name);
            }
            else
            {
                Debug.Log("部屋作る");
                //「ChatTest」という名前で部屋を作る
                MonobitNetwork.CreateRoom("ChatTest");
            }
        }


        if (MonobitNetwork.inRoom && Input.GetKeyDown(KeyCode.J))
        {
            Debug.Log("送るよ");
            _monobitView.RPC("Receive", MonobitTargets.All, this.gameObject.GetComponent <MeshRenderer>() as Object);
        }
    }
Ejemplo n.º 5
0
    // GUIまわりの記述
    public void OnGUI()
    {
        // GUI用の解像度を調整する
        Vector2 guiScreenSize = new Vector2(800, 480);

        if (Screen.width > Screen.height)
        {
            // landscape
            GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.x, Screen.height / guiScreenSize.y), Vector2.zero);
        }
        else
        {
            // portrait
            GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.y, Screen.height / guiScreenSize.x), Vector2.zero);
        }

        if (MonobitNetwork.isConnect)
        {
            // ルーム一覧を取得
            m_RoomData = MonobitNetwork.GetRoomData();

            // ルーム一覧からボタン選択
            if (m_RoomData != null)
            {
                for (int i = 0; i < m_RoomData.Length; i++)
                {
                    if (GUILayout.Button(m_RoomData[i].name + "(" + m_RoomData[i].playerCount + ")", GUILayout.Width(100)))
                    {
                        MonobitNetwork.JoinRoom(m_RoomData[i].name);
                    }
                }
            }

            // ルーム名の入力
            this.roomName = GUILayout.TextField(this.roomName);

            // ルームの作成
            if (GUILayout.Button("Create Room", GUILayout.Width(100)))
            {
                MonobitNetwork.CreateRoom(this.roomName, new RoomSettings()
                {
                    isVisible = true, isOpen = true, maxPlayers = this.maxPlayers
                }, null);
            }

            // ルームへの入室(ランダム)
            if (GUILayout.Button("Join Room", GUILayout.Width(100)))
            {
                MonobitNetwork.JoinRandomRoom();
            }

            // メニューに戻る
            if (GUILayout.Button("Return Menu", GUILayout.Width(100)))
            {
                Application.LoadLevel("SampleMenu");
            }
        }
    }
Ejemplo n.º 6
0
    private async UniTask TestMode()
    {
        MonobitNetwork.playerName    = "TestPlayer";
        MonobitNetwork.autoJoinLobby = true;
        MonobitNetwork.ConnectServer("v1.0");
        await UniTask.WaitUntil(() => MonobitNetwork.isConnect);

        MonobitNetwork.CreateRoom("TestRoom");
    }
Ejemplo n.º 7
0
    private async UniTask PrivateCreateRoom()
    {
        Debug.Log("Creating room...");
        if (newRoomName == "" || newRoomName == null)
        {
            newRoomName = "New Room";
        }
        MonobitNetwork.CreateRoom(newRoomName);
        modal.SetActive(true);
        await UniTask.WaitUntil(() => MonobitNetwork.inRoom);

        SceneManager.LoadScene("Game");
        Debug.Log("Success creating room!");
    }
Ejemplo n.º 8
0
 /// <summary>
 /// roomが存在していればそこに入る。ない場合は新しく作る
 /// </summary>
 /// <param name="room"></param>
 protected virtual void EnterRoom(RoomData room)
 {
     RoomData[] Rooms = MonobitNetwork.GetRoomData();
     if (!MonobitNetwork.inLobby)
     {
         MonobitNetwork.JoinLobby();
         if (Contain(Rooms, room))
         {
             MonobitNetwork.JoinRoom(room.name);
         }
         else
         {
             MonobitNetwork.CreateRoom(room.name);
         }
     }
 }
Ejemplo n.º 9
0
    /// <summary>
    /// 入室機能
    /// </summary>
    public void EnterRoom()
    {
        if (!MonobitNetwork.inLobby)
        {
            return;
        }

        //プレイヤー名を入力
        _playerName = _nameField.text;


        //プレイヤー名が入力されていれば部屋への入室するボタン
        if (!string.IsNullOrEmpty(_playerName))
        {
            if (!MonobitNetwork.inRoom)
            {
                //サーバ上の部屋を全取得
                RoomData[] _roomDatas = MonobitNetwork.GetRoomData();
                //部屋が1つでもあるなら
                if (_roomDatas.Length >= 1)
                {
                    //1つ目の部屋に入る
                    MonobitNetwork.JoinRoom(_roomDatas[0].name);

                    //名前入力欄隠す
                    _nameObject.SetActive(false);
                    _enterObject.SetActive(false);
                    _leaveObject.SetActive(true);
                }
                else
                {
                    Debug.Log("部屋作る");
                    //「SimpleGame」という名前で部屋を作る
                    MonobitNetwork.CreateRoom("SimpleGame");

                    //名前入力欄隠す
                    _nameObject.SetActive(false);
                    _enterObject.SetActive(false);
                    _leaveObject.SetActive(true);
                }
                MonobitNetwork.player.name = _playerName;
            }
        }
    }
Ejemplo n.º 10
0
    void JoinRoom(string roomName)
    {
        Debug.Log(roomName);
        //roomNameという部屋へ移動
        //あるなら移動ないなら作る
        if (!MonobitNetwork.inRoom)
        {
            //サーバ上の部屋を全取得
            RoomData[] roomDatas = MonobitNetwork.GetRoomData();
            //部屋が1つでもあるなら
            if (roomDatas.Length > 0)
            {
                bool IsRoom = false;

                //部屋があるか確認
                foreach (RoomData r in roomDatas)
                {
                    if (r.name == roomName)
                    {
                        IsRoom = true;
                        break;
                    }
                }

                if (IsRoom)
                {
                    MonobitNetwork.JoinRoom(roomName);
                }
                else
                {
                    MonobitNetwork.CreateRoom(roomName);
                }
            }
            else
            {
                //roomNameで部屋を作る
                MonobitNetwork.CreateRoom(roomName);
                Debug.Log("create");
            }
            SceneLoader.Load("Meeting_Scene");
        }
    }
Ejemplo n.º 11
0
        /// <summary>
        /// 接続待ち処理
        /// </summary>
        /// <param name="roomname"></param>
        /// <returns></returns>
        private IEnumerator WaitConnectedCoroutine(string playerName, string roomname)
        {
            yield return(null);

            if (MonobitNetwork.isConnecting)
            {
                yield return(new WaitForSecondsRealtime(3.0f));

                Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name)));
                if (!MonobitNetwork.inRoom)
                {
                    Debug.Log("VC_Connected!");
                    if (MonobitNetwork.GetRoomData().ToList().FirstOrDefault(room => room.name == roomname) == null)
                    {
                        Debug.Log("VC_CreateRoom: " + roomname);
                        MonobitNetwork.CreateRoom(roomname);
                    }
                    else
                    {
                        Debug.Log("VC_JoinRoom: " + roomname);
                        MonobitNetwork.JoinRoom(roomname);
                    }
                    yield return(new WaitForSecondsRealtime(1.0f));

                    Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name)));
                    StartCoroutine(WaitLoginCoroutine(playerName, roomname));
                }
            }
            else
            {
                MonobitNetwork.DisconnectServer();
                MonobitNetwork.playerName    = playerName;
                MonobitNetwork.autoJoinLobby = true;
                MonobitNetwork.ConnectServer("SimpleVoiceChat_v1.0");
                Debug.Log("VC_WaitConnected...");
                yield return(new WaitForSecondsRealtime(1.0f));

                StartCoroutine(WaitConnectedCoroutine(playerName, roomname));
            }
        }
Ejemplo n.º 12
0
    public void EnterandmoveRoom()
    {
        //プレイヤー名を入力
        _playerName = _nameField.text;


        //プレイヤー名が入力されていれば部屋への入室するボタン
        if (!string.IsNullOrEmpty(_playerName))
        {
            if (!MonobitNetwork.inRoom)
            {
                //サーバ上の部屋を全取得
                RoomData[] _roomDatas = MonobitNetwork.GetRoomData();
                //部屋が1つでもあるなら
                if (_roomDatas.Length >= 1)
                {
                    //1つ目の部屋に入る
                    MonobitNetwork.JoinRoom(_roomDatas[0].name);

                    //名前入力欄隠す
                    _nameObject.SetActive(false);
                    _enterObject.SetActive(false);
                    SceneManager.LoadScene("BirthdayScene");
                }
                else
                {
                    //「SimpleGame」という名前で部屋を作る
                    MonobitNetwork.CreateRoom("SimpleGame");

                    //名前入力欄隠す
                    _nameObject.SetActive(false);
                    _enterObject.SetActive(false);
                    SceneManager.LoadScene("BirthdayScene");
                }
                MonobitNetwork.player.name = _playerName;
            }
        }
    }
Ejemplo n.º 13
0
        private IEnumerator WaitConnectedCoroutine(string roomname)
        {
            yield return(null);

            if (MonobitNetwork.isConnecting)
            {
                yield return(new WaitForSecondsRealtime(3.0f));

                Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name)));
                if (!MonobitNetwork.inRoom)
                {
                    Debug.Log("VC_Connected!");
                    if (MonobitNetwork.GetRoomData().ToList().FirstOrDefault(room => room.name == roomname) == null)
                    {
                        Debug.Log("VC_CreateRoom: " + roomname);
                        MonobitNetwork.CreateRoom(roomname);
                    }
                    else
                    {
                        Debug.Log("VC_JoinRoom: " + roomname);
                        MonobitNetwork.JoinRoom(roomname);
                    }
                    yield return(new WaitForSecondsRealtime(1.0f));

                    Debug.Log(string.Join(" / ", MonobitNetwork.GetRoomData().Select(x => x.name)));
                    StartCoroutine(WaitLoginCoroutine());
                }
            }
            else
            {
                Debug.Log("VC_WaitConnected...");
                yield return(new WaitForSecondsRealtime(1.0f));

                StartCoroutine(WaitConnectedCoroutine(roomname));
            }
        }
Ejemplo n.º 14
0
    // GUI制御
    private void OnGUI()
    {
        // MUNサーバに接続している場合
        if (MonobitNetwork.isConnect)
        {
            // ルームに入室している場合
            if (MonobitNetwork.inRoom)
            {
                //ルーム内のプレイヤー一覧の表示
                GUILayout.BeginHorizontal();
                GUILayout.Label("PlayerList : ");
                foreach (MonobitPlayer player in MonobitNetwork.playerList)
                {
                    GUILayout.Label(player.name + " ");
                }
                GUILayout.EndHorizontal();

                // ルームからの退室
                if (GUILayout.Button("Leave Room", GUILayout.Width(150)))
                {
                    MonobitNetwork.LeaveRoom();
                    chatLog.Clear();
                }

                // チャット発言文の入力
                GUILayout.BeginHorizontal();
                GUILayout.Label("Message : ");
                chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400));

                GUILayout.EndHorizontal();

                // チャット発言文を送信する
                if (GUILayout.Button("Send", GUILayout.Width(100)))
                {
                    monobitView.RPC("RecvChat",
                                    MonobitTargets.All,
                                    MonobitNetwork.playerName,
                                    chatWord);
                    chatWord = "";
                }

                // チャットログを表示する
                string msg = "";
                for (int i = 0; i < 10; ++i)
                {
                    msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n";
                }
                GUILayout.TextArea(msg);
            }
            // ルームに入室していない場合
            else
            {
                // ルーム名入力
                GUILayout.BeginHorizontal();
                GUILayout.Label("RoomName : ");
                roomName = GUILayout.TextField(roomName, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                // ルームを作成して入室する
                if (GUILayout.Button("CreateRoom", GUILayout.Width(150)))
                {
                    MonobitNetwork.CreateRoom(roomName);
                }

                // ルーム一覧を検索
                foreach (RoomData room in MonobitNetwork.GetRoomData())
                {
                    System.String roomParam =
                        System.String.Format("{0}({1}/{2})",
                                             room.name,
                                             room.playerCount,
                                             ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString())
                                             );

                    // ルームを選択して入室する
                    if (GUILayout.Button("Enter Room : " + roomParam))
                    {
                        MonobitNetwork.JoinRoom(room.name);
                    }
                }
            }
        }
        // MUNサーバに接続していない場合
        else
        {
            // プレイヤー名の入力
            GUILayout.BeginHorizontal();
            GUILayout.Label("PlayerName : ");
            MonobitNetwork.playerName = GUILayout.TextField(
                (MonobitNetwork.playerName == null) ?
                "" :
                MonobitNetwork.playerName, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            // デフォルトロビーへの自動入室を許可する
            MonobitNetwork.autoJoinLobby = true;

            // MUNサーバに接続する
            if (GUILayout.Button("ConnectServer", GUILayout.Width(150)))
            {
                MonobitNetwork.ConnectServer("SinpleChat_v1.0");
            }
        }
    }
Ejemplo n.º 15
0
    private void OnGUI()
    {
        // デフォルトのボタンと被らないように、段下げを行なう。
        GUILayout.Space(24);

        // MUNサーバに接続している場合
        if (MonobitNetwork.isConnect)
        {
            // ボタン入力でサーバから切断&シーンリセット
            if (GUILayout.Button("Disconnect", GUILayout.Width(150)))
            {
                // サーバから切断する
                MonobitNetwork.DisconnectServer();

                // シーンをリロードする
#if UNITY_5_3_OR_NEWER || UNITY_5_3
                string sceneName = UnityEngine.SceneManagement.SceneManager.GetActiveScene().name;
                UnityEngine.SceneManagement.SceneManager.LoadScene(sceneName);
#else
                Application.LoadLevel(Application.loadedLevelName);
#endif
            }

            // ルームに入室している場合
            if (MonobitNetwork.inRoom)
            {
                // ボタン入力でルームから退室
                if (GUILayout.Button("Leave Room", GUILayout.Width(150)))
                {
                    MonobitNetwork.LeaveRoom();
                }
            }

            // ルームに入室していない場合
            if (!MonobitNetwork.inRoom)
            {
                GUILayout.BeginHorizontal();

                // ルーム名の入力
                GUILayout.Label("RoomName : ");
                roomName = GUILayout.TextField(roomName, GUILayout.Width(200));

                // ボタン入力でルーム作成
                if (GUILayout.Button("Create Room", GUILayout.Width(150)))
                {
                    MonobitNetwork.CreateRoom(roomName);
                }

                GUILayout.EndHorizontal();

                // 現在存在するルームからランダムに入室する
                if (GUILayout.Button("Join Random Room", GUILayout.Width(200)))
                {
                    MonobitNetwork.JoinRandomRoom();
                }

                // ルーム一覧から選択式で入室する
                foreach (RoomData room in MonobitNetwork.GetRoomData())
                {
                    string strRoomInfo =
                        string.Format("{0}({1}/{2})",
                                      room.name,
                                      room.playerCount,
                                      (room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString());

                    if (GUILayout.Button("Enter Room : " + strRoomInfo))
                    {
                        MonobitNetwork.JoinRoom(room.name);
                    }
                }
            }
        }
    }
Ejemplo n.º 16
0
        /**
         * ルーム作成設定.
         */
        private void OnGUI_CreateRoom()
        {
            // 表題
            GUILayout.Label("Create Room", new GUIStyle()
            {
                normal = new GUIStyleState()
                {
                    textColor = Color.white
                }, fontStyle = FontStyle.Bold
            });
            GUILayout.BeginHorizontal();
            GUILayout.Space(25);
            GUILayout.BeginVertical();
            GUILayout.Label("Custom Parameters");

            // ルームのカスタムパラメータの値入力
            if (this.customRoomParam.Count > 0)
            {
                Hashtable tmp = new Hashtable(this.customRoomParam);
                foreach (string key in this.customRoomParam.Keys)
                {
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("Key : " + key + ", Value : ", GUILayout.Width(125));
                    tmp[key] = GUILayout.TextField(this.customRoomParam[key].ToString(), GUILayout.Width(200));
                    if (GUILayout.Button("Remove", GUILayout.Width(75)))
                    {
                        tmp.Remove(key);
                    }
                    GUILayout.EndHorizontal();
                }
                this.customRoomParam = tmp;
            }

            // ルームのカスタムパラメータのキー追加
            GUILayout.BeginHorizontal();
            GUILayout.Label("New Key : ", GUILayout.Width(100));
            customRoomKey = GUILayout.TextField(customRoomKey, GUILayout.Width(200));
            if (GUILayout.Button("Add", GUILayout.Width(75)))
            {
                if (!string.IsNullOrEmpty(customRoomKey))
                {
                    this.customRoomParam[customRoomKey] = "" as object;
                    customRoomKey = "";
                }
            }
            GUILayout.EndHorizontal();

            // 自分の作成するルーム名を公開設定にするかどうかのフラグ
            this.isVisible = GUILayout.Toggle(this.isVisible, "Visible room");

            // 自分のルームに入室可能な収容人数の設定
            GUILayout.BeginHorizontal(new GUIStyle()
            {
                alignment = TextAnchor.MiddleLeft
            });
            GUILayout.Label("Max Players : ", GUILayout.Width(100));
            string tmpInput = GUILayout.TextField(this.maxPlayers.ToString(), GUILayout.Width(50));

            byte.TryParse(tmpInput, out this.maxPlayers);

            // 任意の名称を持つルームを作成する
            if (GUILayout.Button("Create Room", GUILayout.Width(150)))
            {
                // カスタムルームパラメータから、ロビー送信パラメータを抽出(とりあえず全部送信するようにする)
                string[] customRoomParametersForLobby = new string[this.customRoomParam.Keys.Count];
                int      keyIndex = 0;
                foreach (string key in this.customRoomParam.Keys)
                {
                    customRoomParametersForLobby[keyIndex] = key;
                    keyIndex++;
                }

                RoomSettings roomSettings = new RoomSettings()
                {
                    isVisible       = this.isVisible,
                    isOpen          = true,
                    maxPlayers      = this.maxPlayers,
                    roomParameters  = this.customRoomParam,
                    lobbyParameters = customRoomParametersForLobby
                };

                MonobitNetwork.CreateRoom(null, roomSettings, null);
            }

            GUILayout.EndHorizontal();
            GUILayout.EndVertical();
            GUILayout.EndHorizontal();
        }
Ejemplo n.º 17
0
 // 作成ボタンが押された際に呼ばれる
 public void OnClickCreate()
 {
     // 引数にはルーム名、Start()内で設定したルーム設定、ロビーはデフォルトのロビー
     // なためnull、を入れています。
     MonobitNetwork.CreateRoom(m_RoomName, m_RoomSettings, null);
 }
Ejemplo n.º 18
0
        /**
         * @brief   オンライン&ロビー入室中のGUI表示.
         * @param   isDispInputGUI  入力系GUIを表示するかどうかのフラグ(縁取り文字描画機能を活かした場合の、多重描画を防止するため).
         * @param   state           文字表示色.
         */
        private void OnGUI_InLobby(bool isDispInputGUI, GUIStyleState state)
        {
            // ルーム作成GUIレイヤー
            {
                // Header
                GUILayout.Label("Create Room/Join Random", new GUIStyle()
                {
                    normal = state, fontSize = 18
                });
                GUILayout.BeginHorizontal();
                GUILayout.Space(25);
                GUILayout.BeginVertical();

                GUILayout.BeginHorizontal();
                {
                    // ルーム名の入力欄、および作成ボタン入力表示
                    GUILayout.Label("Input room name:", new GUIStyle()
                    {
                        normal = state, fontSize = 16, margin = new RectOffset(6, 6, 6, 6), fixedWidth = 140
                    });
                    if (isDispInputGUI)
                    {
                        this.roomName = GUILayout.TextField(this.roomName, GUILayout.Width(200));
                        if (GUILayout.Button("Create Room", GUILayout.Width(150)))
                        {
                            // 入力があった場合、指定された名前で4人部屋を生成
                            MonobitNetwork.CreateRoom(roomName, new RoomSettings()
                            {
                                isVisible = true, isOpen = true, maxPlayers = 4
                            }, null);
                        }
                    }
                    else
                    {
                        GUILayout.Space(25);
                    }
                }
                GUILayout.EndHorizontal();

                // ルームの作成ボタン入力表示
                if (isDispInputGUI)
                {
                    if (GUILayout.Button("Join Random", GUILayout.Width(150)))
                    {
                        // ランダム入室をする
                        MonobitNetwork.JoinRandomRoom();
                    }
                }
                else
                {
                    GUILayout.Space(25);
                }

                // Footer
                GUILayout.EndVertical();
                GUILayout.EndHorizontal();
            }

            // ルームリストGUIレイヤー
            {
                // ルーム一覧の取得
                RoomData[] roomList = MonobitNetwork.GetRoomData();

                // ルーム一覧が存在する場合、ルームリストを表示
                if (roomList != null)
                {
                    // Header
                    GUILayout.Label("Created Room List", new GUIStyle()
                    {
                        normal = state, fontSize = 24
                    });
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(25);
                    GUILayout.BeginVertical();

                    // ルームリストについて、1件ずつボタン入力表示
                    foreach (RoomData room in roomList)
                    {
                        if (isDispInputGUI && room.open && room.visible)
                        {
                            if (GUILayout.Button(room.name + " (" + room.playerCount + "/" + room.maxPlayers + ")", GUILayout.Width(300)))
                            {
                                MonobitNetwork.JoinRoom(room.name);
                            }
                        }
                    }

                    // Footer
                    GUILayout.EndVertical();
                    GUILayout.EndHorizontal();
                }
            }
        }
Ejemplo n.º 19
0
    private void OnGUI()
    {
        //MUNサーバに接続している場合
        if (MonobitNetwork.isConnect)
        {
            //Debug.Log("サーバに接続しました");
            // ルームに入室している場合
            if (MonobitNetwork.inRoom)
            {
                /*
                 *
                 * //Debug.Log("ルームに入室しました");
                 * // ルーム内のプレイヤー一覧の表示
                 * GUILayout.BeginHorizontal();
                 * GUILayout.Label("PlayerList : ");
                 * //Debug.Log("PlayerList:");
                 * foreach (MonobitPlayer player in MonobitNetwork.playerList)
                 * {
                 *  GUILayout.Label(player.name + " ");
                 *  //Debug.Log(player.name + " ");
                 * }
                 * GUILayout.EndHorizontal();
                 *
                 * // ルームからの退室
                 * if (GUILayout.Button("Leave Room", GUILayout.Width(150)))
                 * {
                 *  MonobitNetwork.LeaveRoom();
                 *  //Debug.Log("ルームから退出しました");
                 *  chatLog.Clear();
                 * }
                 *
                 * // チャット発言文の入力
                 * GUILayout.BeginHorizontal();
                 * GUILayout.Label("Message : ");
                 * chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400));
                 * GUILayout.EndHorizontal();
                 *
                 * // チャット発言文を送信する
                 * if (GUILayout.Button("Send", GUILayout.Width(100)))
                 * {
                 *  monobitView.RPC("RecvChat",
                 *                  MonobitTargets.All,
                 *                  MonobitNetwork.playerName,
                 *                  chatWord);
                 *  chatWord = "";
                 * }
                 *
                 * // チャットログを表示する
                 * string msg = "";
                 * for (int i = 0; i < 10; ++i)
                 * {
                 *  msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n";
                 * }
                 * GUILayout.TextArea(msg);
                 */
            }
            // ルームに入室していない場合
            else
            {
                // ルーム名の入力
                GUILayout.BeginHorizontal();
                GUILayout.Label("RoomName : ");
                roomName = GUILayout.TextField(roomName, GUILayout.Width(200));
                GUILayout.EndHorizontal();
                // ルームを作成して入室する
                if (GUILayout.Button("Create Room", GUILayout.Width(150)))
                {
                    MonobitNetwork.CreateRoom(roomName);
                    Debug.Log("ルームを作成しました");

                    /********
                     * ここでメインのシーンに遷移する
                     *********/
                    SceneManager.LoadScene("newUI");
                }
                // ルーム一覧を検索
                foreach (RoomData room in MonobitNetwork.GetRoomData())
                {
                    // ルームパラメータの可視化
                    System.String roomParam =
                        System.String.Format(
                            "{0}({1}/{2})",
                            room.name,
                            room.playerCount,
                            ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString())
                            );

                    // ルームを選択して入室する
                    if (GUILayout.Button("Enter Room : " + roomParam))
                    {
                        MonobitNetwork.JoinRoom(room.name);

                        /********
                         * ここでメインのシーンに遷移する
                         *********/
                        SceneManager.LoadScene("newUI");
                    }
                }
            }
        }
        //していない場合
        else
        {
            // プレイヤー名の入力
            GUILayout.BeginHorizontal();
            GUILayout.Label("PlayerName : ");
            MonobitNetwork.playerName = GUILayout.TextField(
                (MonobitNetwork.playerName == null) ?
                "" :
                MonobitNetwork.playerName, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            // デフォルトロビーへの自動入室を許可する
            MonobitNetwork.autoJoinLobby = true;

            // MUNサーバに接続する
            if (GUILayout.Button("Connect Server", GUILayout.Width(150)))
            {
                MonobitNetwork.ConnectServer("SimpleChat_v1.0");
                Debug.Log("サーバに接続しました");
            }
        }
    }
Ejemplo n.º 20
0
        /**
         * ルーム作成設定.
         */
        private void OnGUI_CreateOrJoinRoom()
        {
            // 値の入力
            GUILayout.BeginHorizontal();
            GUILayout.Label("Your Numeric Value(" + baseValueLow + "-" + baseValueHigh + ") : ", GUILayout.Width(200));
            baseValue = Convert.ToInt32(GUILayout.TextField(baseValue.ToString(), GUILayout.Width(50)));
            GUILayout.EndHorizontal();

            // ルーム最大人数の入力
            GUILayout.BeginHorizontal();
            GUILayout.Label("Room Max Players : ", GUILayout.Width(200));
            maxPlayers = Convert.ToByte(GUILayout.TextField(maxPlayers.ToString(), GUILayout.Width(50)));
            GUILayout.EndHorizontal();

            // ルームの作成
            if (GUILayout.Button("Create Room", GUILayout.Width(250)))
            {
                // 入力した値が範囲外の場合、入力を無視する
                if (baseValue < baseValueLow || baseValue > baseValueHigh)
                {
                    Debug.LogWarning("Your value must between" + baseValueLow + " and " + baseValueHigh);
                }
                else
                {
                    // 自身の値をクエリーパラメータとして代入
                    customRoomParam["Value"] = baseValue;

                    // ロビー抽出バラメータの設定
                    string[] customRoomParametersForLobby = { "Value" };

                    // ルームの作成
                    RoomSettings roomSettings = new RoomSettings()
                    {
                        isVisible       = true,
                        isOpen          = true,
                        maxPlayers      = this.maxPlayers,
                        roomParameters  = this.customRoomParam,
                        lobbyParameters = customRoomParametersForLobby
                    };
                    MonobitNetwork.CreateRoom(null, roomSettings, null);
                }
            }

            // ルームへの入室
            if (GUILayout.Button("Join Room", GUILayout.Width(250)))
            {
                // 入力した値が範囲外の場合、入力を無視する
                if (baseValue < baseValueLow || baseValue > baseValueHigh)
                {
                    Debug.LogWarning("Your value must between" + baseValueLow + " and " + baseValueHigh);
                }
                else
                {
                    // 自身の値に対し、検索範囲の最初の閾値を設定する
                    baseValueMin = (baseValue - baseValueIncrease < baseValueLow) ? baseValueLow : baseValue - baseValueIncrease;
                    baseValueMax = (baseValue + baseValueIncrease > baseValueHigh) ? baseValueHigh : baseValue + baseValueIncrease;

                    // 閾値から、クエリー検索のためのWHERE句を生成する
                    string queryLobbyFilter = "Value>=" + baseValueMin + " AND Value<=" + baseValueMax;

                    // ルームへの入室
                    MonobitNetwork.JoinRandomRoom(null, this.maxPlayers, Definitions.MatchmakingMode.SerialMatching, new LobbyInfo()
                    {
                        Kind = LobbyKind.Query, Name = "QueryLobby"
                    }, queryLobbyFilter);
                }
            }
        }
Ejemplo n.º 21
0
    private void OnGUI()
    {
        //MUNサーバに接続している場合
        if (MonobitNetwork.isConnect)
        {
            //Debug.Log("サーバに接続しました");
            // ルームに入室している場合
            if (MonobitNetwork.inRoom)
            {
            }
            // ルームに入室していない場合
            else
            {
                int x = Screen.width;
                int y = Screen.height;
                // ルーム名の入力
                //UIの位置を中心に
                GUILayout.Space(y / 3.2f);
                GUILayout.BeginHorizontal();
                {
                    GUILayout.Space(x / 4.5f);
                    GUI.skin.label.fontSize = x / 30;
                    GUILayout.Label("部屋名・パスワードは4文字まで", GUILayout.Height(x / 20), GUILayout.Width(x / 2));
                }
                GUILayout.EndHorizontal();
                GUILayout.BeginHorizontal();
                {
                    GUILayout.Space(x / 4);
                    GUI.skin.label.fontSize = x / 50;
                    GUILayout.Label("部屋名: ", GUILayout.Width(x / 8));
                    GUI.skin.textField.fontSize = x / 50;
                    GUI.skin.button.fontSize    = x / 50;
                    roomName = GUILayout.TextField(roomName, GUILayout.Height(x / 40), GUILayout.Width(x / 3));
                }
                GUILayout.EndHorizontal();
                //パスワード欄
                GUILayout.BeginHorizontal();
                {
                    GUILayout.Space(x / 5);
                    GUILayout.Label("パスワード作成: ", GUILayout.Height(x / 40), GUILayout.Width(x * 7 / 40));
                    roomPasword = GUILayout.TextField(roomPasword, GUILayout.Height(x / 40), GUILayout.Width(x / 3));
                }
                GUILayout.EndHorizontal();
                // ルームを作成して入室する
                GUILayout.BeginHorizontal();
                GUILayout.Space(x * 3 / 8);
                if (GUILayout.Button("部屋を作成", GUILayout.Height(x / 35), GUILayout.Width(x / 3)))
                {
                    int a = roomName.Length;
                    int b = roomPasword.Length;

                    MonobitNetwork.CreateRoom(roomName + roomPasword + a + b);
                    Debug.Log("ルームを作成しました");

                    /********
                     * ここでメインのシーンに遷移する
                     *********/
                    SceneManager.LoadScene("newUI");
                }
                GUILayout.EndHorizontal();
                // ルーム一覧を検索
                foreach (RoomData room in MonobitNetwork.GetRoomData())
                {
                    // ルームパラメータの可視化
                    System.String roomParam =
                        System.String.Format(
                            "{0}({1}/{2})",
                            room.name,
                            room.playerCount,
                            ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString())
                            );
                    string rn = room.name;
                    string s1 = rn.Substring(rn.Length - 1);
                    string s2 = rn.Substring(rn.Length - 2, 1);
                    int    i1 = int.Parse(s1);
                    int    i2 = int.Parse(s2);
                    string s3 = rn.Substring(0, i2);
                    string s4 = rn.Substring(i2, i1);
                    //ルームパスワードと結びつけ
                    GUILayout.BeginHorizontal();
                    {
                        GUILayout.Space(x / 8);
                        GUILayout.Label(s3 + "のパスワード解除: ", GUILayout.Height(x / 40), GUILayout.Width(x / 4));
                        roomUnrock = GUILayout.TextField(roomUnrock, GUILayout.Height(x / 40), GUILayout.Width(x / 3));
                    }
                    GUILayout.EndHorizontal();
                    GUILayout.BeginHorizontal();
                    GUILayout.Space(x * 3 / 8);
                    // ルームを選択して入室する
                    if (GUILayout.Button("部屋に入室 : " + s3, GUILayout.Height(x / 35), GUILayout.Width(x / 3)))
                    {
                        if (roomUnrock == s4)
                        {
                            MonobitNetwork.JoinRoom(room.name);

                            /********
                             * ここでメインのシーンに遷移する
                             *********/
                            SceneManager.LoadScene("newUI");
                        }
                        else
                        {
                            Debug.Log("パスワードが違います");
                        }
                    }
                    GUILayout.EndHorizontal();
                }
            }
        }
        //していない場合
        else
        {
            int x = Screen.width;
            int y = Screen.height;
            // プレイヤー名の入力
            GUILayout.Space(y / 2.3f);
            GUILayout.BeginHorizontal();
            {
                GUILayout.Space(x / 4);
                GUILayout.Label("名前入力 : ", GUILayout.Width(x / 8));
                GUI.skin.label.fontSize     = x / 50;
                GUI.skin.textField.fontSize = x / 50;
                GUI.skin.button.fontSize    = x / 50;
                MonobitNetwork.playerName   = GUILayout.TextField(
                    (MonobitNetwork.playerName == null) ?
                    "" :
                    MonobitNetwork.playerName, GUILayout.Height(x / 40), GUILayout.Width(x / 3));
            }
            GUILayout.EndHorizontal();

            // デフォルトロビーへの自動入室を許可する
            MonobitNetwork.autoJoinLobby = true;

            // MUNサーバに接続する
            GUILayout.BeginHorizontal();
            GUILayout.Space(x * 3 / 8);
            if (GUILayout.Button("サーバに接続", GUILayout.Height(x / 35), GUILayout.Width(x / 3)))
            {
                MonobitNetwork.ConnectServer("SimpleChat_v1.0");
                Debug.Log("サーバに接続しました");
            }
            GUILayout.EndHorizontal();
        }
    }
Ejemplo n.º 22
0
    /**
     * GUI制御.
     */
    void OnGUI()
    {
        // GUI用の解像度を調整する
        Vector2 guiScreenSize = new Vector2(800, 480);

        if (Screen.width > Screen.height)
        {
            // landscape
            GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.x, Screen.height / guiScreenSize.y), Vector2.zero);
        }
        else
        {
            // portrait
            GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.y, Screen.height / guiScreenSize.x), Vector2.zero);
        }

        // MUNサーバに接続している場合
        if (MonobitNetwork.isConnect)
        {
            // ルームに入室している場合
            if (MonobitNetwork.inRoom)
            {
                // ルーム内のプレイヤー一覧の表示
                GUILayout.BeginHorizontal();
                GUILayout.Label("PlayerList : ");
                foreach (MonobitPlayer player in MonobitNetwork.playerList)
                {
                    GUILayout.Label(player.name + " ");
                }
                GUILayout.EndHorizontal();

                // ルームからの退室
                if (GUILayout.Button("Leave Room", GUILayout.Width(150)))
                {
                    MonobitNetwork.LeaveRoom();
                    chatLog.Clear();
                }

                // チャット発言文の入力
                GUILayout.BeginHorizontal();
                GUILayout.Label("Message : ");
                chatWord = GUILayout.TextField(chatWord, GUILayout.Width(400));
                GUILayout.EndHorizontal();

                // チャット発言文を送信する
                if (GUILayout.Button("Send", GUILayout.Width(100)))
                {
                    monobitView.RPC("RecvChat", MonobitTargets.All, MonobitNetwork.playerName, chatWord);
                    chatWord = "";
                }

                // チャットログを表示する
                string msg = "";
                for (int i = 0; i < 10; ++i)
                {
                    msg += ((i < chatLog.Count) ? chatLog[i] : "") + "\r\n";
                }
                GUILayout.TextArea(msg);
            }
            // ルームに入室していない場合
            else
            {
                // ルーム名の入力
                GUILayout.BeginHorizontal();
                GUILayout.Label("RoomName : ");
                roomName = GUILayout.TextField(roomName, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                // ルームを作成して入室する
                if (GUILayout.Button("Create Room", GUILayout.Width(150)))
                {
                    MonobitNetwork.CreateRoom(roomName);
                    chatLog.Clear();
                }

                // ルーム一覧を検索
                foreach (RoomData room in MonobitNetwork.GetRoomData())
                {
                    // ルームを選択して入室する
                    if (GUILayout.Button("Enter Room : " + room.name + "(" + room.playerCount + "/" + ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()) + ")"))
                    {
                        MonobitNetwork.JoinRoom(room.name);
                    }
                }
            }
        }
        // MUNサーバに接続していない場合
        else
        {
            // プレイヤー名の入力
            GUILayout.BeginHorizontal();
            GUILayout.Label("PlayerName : ");
            MonobitNetwork.playerName = GUILayout.TextField((MonobitNetwork.playerName == null) ? "": MonobitNetwork.playerName, GUILayout.Width(200));
            GUILayout.EndHorizontal();

            // デフォルトロビーへの自動入室を許可する
            MonobitNetwork.autoJoinLobby = true;

            // MUNサーバに接続する
            if (GUILayout.Button("Connect Server", GUILayout.Width(150)))
            {
                MonobitNetwork.ConnectServer("SimpleChat_v1.0");
            }
        }
    }
Ejemplo n.º 23
0
 /// <summary>ルームを作る</summary>
 void CreateRoom()
 {
     MonobitNetwork.CreateRoom(this.roomName, this.commonRoomSettings, MonobitNetwork.lobby);
 }
 void OnJoinRoomFailed()
 {
     Debug.Log("OnJoinRoomFailed");
     MonobitNetwork.CreateRoom("AutoLoginRoom");
 }
Ejemplo n.º 25
0
        /**
         * GUI制御.
         */
        void OnGUI()
        {
            // GUI用の解像度を調整する
            Vector2 guiScreenSize = new Vector2(800, 480);

            if (Screen.width > Screen.height)
            {
                // landscape
                GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.x, Screen.height / guiScreenSize.y), Vector2.zero);
            }
            else
            {
                // portrait
                GUIUtility.ScaleAroundPivot(new Vector2(Screen.width / guiScreenSize.y, Screen.height / guiScreenSize.x), Vector2.zero);
            }

            // MUNサーバに接続している場合
            if (MonobitNetwork.isConnect)
            {
                // ルームに入室している場合
                if (MonobitNetwork.inRoom)
                {
                    // ルーム内のプレイヤー一覧の表示
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("PlayerList : ");
                    foreach (MonobitPlayer player in MonobitNetwork.playerList)
                    {
                        GUILayout.Label(player.name + " ");
                    }
                    GUILayout.EndHorizontal();

                    // ルームからの退室
                    if (GUILayout.Button("Leave Room", GUILayout.Width(150)))
                    {
                        MonobitNetwork.LeaveRoom();
                    }

                    if (myVoice != null)
                    {
                        // 送信タイプの設定
                        GUILayout.BeginHorizontal();
                        GUILayout.Label("VoiceChat Send Type : ");
                        Int32 streamType = myVoice.SendStreamType == StreamType.BROADCAST ? 0 : 1;
                        myVoice.SendStreamType = (StreamType)GUILayout.Toolbar(streamType, new string[] { "broadcast", "multicast" });
                        GUILayout.EndHorizontal();

                        // マルチキャスト送信の場合の、ボイスチャットの送信可否設定
                        if (myVoice.SendStreamType == StreamType.MULTICAST)
                        {
                            List <MonobitPlayer> playerList = new List <MonobitPlayer>(vcPlayerInfo.Keys);
                            List <MonobitPlayer> vcTargets  = new List <MonobitPlayer>();
                            foreach (MonobitPlayer player in playerList)
                            {
                                // GUI による送信可否の切替
                                GUILayout.BeginHorizontal();
                                GUILayout.Label("PlayerName : " + player.name + " ");
                                GUILayout.Label("Send Permission: ");
                                vcPlayerInfo[player] = GUILayout.Toolbar(vcPlayerInfo[player], new string[] { "Allow", "Deny" });
                                GUILayout.EndHorizontal();
                                // ボイスチャットの送信可のプレイヤー情報を登録する
                                if (vcPlayerInfo[player] == (Int32)EnableVC.ENABLE)
                                {
                                    vcTargets.Add(player);
                                }
                            }

                            // ボイスチャットの送信可否設定を反映させる
                            myVoice.SetMulticastTarget(vcTargets.ToArray());
                        }
                    }
                }
                // ルームに入室していない場合
                else
                {
                    // ルーム名の入力
                    GUILayout.BeginHorizontal();
                    GUILayout.Label("RoomName : ");
                    roomName = GUILayout.TextField(roomName, GUILayout.Width(200));
                    GUILayout.EndHorizontal();

                    // ルームを作成して入室する
                    if (GUILayout.Button("Create Room", GUILayout.Width(150)))
                    {
                        MonobitNetwork.CreateRoom(roomName);
                    }

                    // ルーム一覧を検索
                    foreach (RoomData room in MonobitNetwork.GetRoomData())
                    {
                        // ルームを選択して入室する
                        if (GUILayout.Button("Enter Room : " + room.name + "(" + room.playerCount + "/" + ((room.maxPlayers == 0) ? "-" : room.maxPlayers.ToString()) + ")"))
                        {
                            MonobitNetwork.JoinRoom(room.name);
                        }
                    }
                }
            }
            // MUNサーバに接続していない場合
            else
            {
                // プレイヤー名の入力
                GUILayout.BeginHorizontal();
                GUILayout.Label("PlayerName : ");
                MonobitNetwork.playerName = GUILayout.TextField((MonobitNetwork.playerName == null) ? "" : MonobitNetwork.playerName, GUILayout.Width(200));
                GUILayout.EndHorizontal();

                // デフォルトロビーへの自動入室を許可する
                MonobitNetwork.autoJoinLobby = true;

                // MUNサーバに接続する
                if (GUILayout.Button("Connect Server", GUILayout.Width(150)))
                {
                    MonobitNetwork.ConnectServer("SimpleVoiceChat_v1.0");
                }
            }
        }
Ejemplo n.º 26
0
 public static void CreateRoom(string roomName)
 {
     MonobitNetwork.playerName = "host";
     MonobitNetwork.CreateRoom(roomName);
     Debug.Log("ルーム【" + roomName + "】を作成");
 }