예제 #1
0
        /**
         * ルーム一覧情報.
         */
        private void OnGUI_RoomInfo()
        {
            // 表題
            GUILayout.Label("RoomInfo", new GUIStyle()
            {
                normal = new GUIStyleState()
                {
                    textColor = Color.white
                }, fontStyle = FontStyle.Bold
            });
            GUILayout.BeginHorizontal();
            GUILayout.Space(25);

            // ロビー通知されているルーム一覧情報の取得
            RoomData[] roomList = MonobitNetwork.GetRoomData();
            foreach (RoomData room in roomList)
            {
                string roomInfo = "RoomName : " + room.name + " CustomParam ";
                foreach (string key in room.customParameters.Keys)
                {
                    roomInfo += "Key : " + key + " ";
                    roomInfo += "Value : " + room.customParameters[key].ToString() + " ";
                }
                GUILayout.Label(roomInfo);
            }

            GUILayout.EndHorizontal();
        }
예제 #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"), "こんにちは");
        }
    }
예제 #3
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);
        }
    }
예제 #4
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");
            }
        }
    }
예제 #5
0
    public void ReloadRoomList()
    {
        foreach (GameObject entry in roomListView)
        {
            GameObject.Destroy(entry);
        }
        var roomList = MonobitNetwork.GetRoomData();

        foreach (var roomData in roomList)
        {
            var go = Instantiate(roomListEntryPrefab, roomListView);
            go.GetComponent <RoomListEntry>().Initialize(roomData);
        }
    }
예제 #6
0
    public static string[] getRoomNames()
    {
        List <string> rooms = new List <string>();

        foreach (RoomData room in MonobitNetwork.GetRoomData())
        {
            //1人以下のみ
            if (room.playerCount <= 1)
            {
                rooms.Add(room.name);
                Debug.Log("ルーム【" + room.name + "】を取得");
            }
        }
        return(rooms.ToArray());
    }
예제 #7
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);
         }
     }
 }
예제 #8
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;
            }
        }
    }
예제 #9
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");
        }
    }
예제 #10
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));
            }
        }
예제 #11
0
    private void OnClickJoin()
    {
        RoomData[] roomData = MonobitNetwork.GetRoomData();
        int        length   = roomData.Length;

        for (int i = 0; i < length; ++i)
        {
            if (!roomData[i].name.Equals(m_RoomName))
            {
                continue;
            }
            if (!roomData[i].customParameters["password"].Equals(m_Password))
            {
                Debug.Log("Incorrect Password");

                return;
            }
            MonobitNetwork.JoinRoom(m_RoomName);

            break;
        }
    }
예제 #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;
            }
        }
    }
예제 #13
0
    private void UpdateRoomData()
    {
        var scrollViewContent = m_scrollViewObj.transform.Find("Viewport/Content");
        int roomCount         = MonobitNetwork.GetRoomData().Length;

        for (int i = 0; i < roomCount; i++)
        {
            RoomData roomData = MonobitNetwork.GetRoomData()[i];
            if (!roomData.customParameters["password"].Equals("empty"))
            {
                continue;
            }
            GameObject button = (GameObject)Instantiate(m_ButtonPrefab);
            button.transform.SetParent(scrollViewContent, false);

            button.GetComponent <RectTransform>().anchoredPosition = new Vector3(0, i * -30 + 120, 0);



            button.GetComponent <ScrollViewButton>().Set(MonobitNetwork.GetRoomData()[i]);

            m_ButtonList.Add(button);
        }
    }
예제 #14
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));
            }
        }
예제 #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);
                    }
                }
            }
        }
    }
예제 #16
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");
                }
            }
        }
예제 #17
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();
                }
            }
        }
예제 #18
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("サーバに接続しました");
            }
        }
    }
예제 #19
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();
        }
    }
예제 #20
0
        /**
         * ルーム内でのGUI操作.
         */
        private void OnGUI_InRoom()
        {
            // 自身のプレイヤーIDの表示
            GUILayout.Label("Your ID : " + MonobitNetwork.player.ID);

            // ルーム内に存在するプレイヤー数の表示
            GUILayout.Label("PlayerCount : " + MonobitNetwork.room.playerCount + " / " + ((MonobitNetwork.room.maxPlayers == 0) ? "-" : MonobitNetwork.room.maxPlayers.ToString()));

            // ルームの入室制限可否設定の表示
            GUILayout.Label("Room isOpen : " + MonobitNetwork.room.open);

            // ルーム作成者が入力した値
            GUILayout.Label("Room Owner Numeric Value : " + MonobitNetwork.room.customParameters["Value"]);

            // 自身が入力した値
            GUILayout.Label("My Skill Level : " + baseValue);

            // 制限時間の表示
            if (isGameStart)
            {
                GUILayout.Label("Rest Frame : " + this.battleEndFrame);
            }

            // 部屋からの離脱
            if (GUILayout.Button("Leave Room", GUILayout.Width(150)))
            {
                MonobitNetwork.LeaveRoom();
            }

            // ホストの場合
            if (MonobitNetwork.isHost)
            {
                // ゲームスタート
                if (!isGameStart && GUILayout.Button("Start Game", GUILayout.Width(150)))
                {
                    this.isGameStart = true;
                    // room.open = false;
                    monobitView.RPC("GameStart", MonobitTargets.All, null);
                }

                // バトル終了
                if (this.battleEndFrame <= 0)
                {
                    // room.open = true;

                    // 部屋から離脱する
                    monobitView.RPC("LeaveRoomAll", MonobitTargets.All, null);
                }
            }

            // 他にルームが作成されている場合
            if (MonobitNetwork.GetRoomData() != null && MonobitNetwork.GetRoomData().Length >= 1)
            {
                // 他の部屋に入室
                if (GUILayout.Button("Enter Another Room", GUILayout.Width(150)))
                {
                    // 一旦部屋から離脱する
                    MonobitNetwork.LeaveRoom();

                    // 自身の値に対し、検索範囲の最初の閾値を設定する
                    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);
                }
            }
        }
예제 #21
0
    void NetworkSettingWindow(int windowID)
    {
        // ゲームサーバー名の設定.
        GUILayout.BeginHorizontal();
        GUILayout.Label("Create Room Name: ");
        this.roomName = GUILayout.TextField(this.roomName, 32);
        GUILayout.EndHorizontal();

        // ゲームサーバーを起動する.
        GUILayout.BeginHorizontal();
        GUILayout.FlexibleSpace();
        if (MonobitNetwork.inRoom)
        {
            //if (MonobitNetwork.isHost)
            //{
            //    if (GUILayout.Button("Start game"))
            //    {
            //        Debug.Log("Start game");
            //        var playerCustomParams = new Hashtable
            //        {
            //            ["isGameStarted"] = true
            //        };
            //        MonobitNetwork.SetPlayerCustomParameters(playerCustomParams);
            //        this.isGameStarted = true;
            //    }
            //}
            //else
            //{
            //    if (GUILayout.Button("Leave room"))
            //    {
            //        Debug.Log("Leave room");
            //        MonobitNetwork.LeaveRoom();
            //    }
            //}
        }
        else
        {
            if (GUILayout.Button("Create room"))
            {
                this.CreateRoom();
            }
        }

        GUILayout.EndHorizontal();
        GUILayout.Space(20);

        // ゲームサーバーリスト.
        GUILayout.BeginHorizontal();
        GUILayout.Label("Room List (Click To Join):");
        GUILayout.EndHorizontal();

        this.scrollPosition = GUILayout.BeginScrollView(this.scrollPosition, GUILayout.Width(380), GUILayout.Height(200));
        var rooms = MonobitNetwork.GetRoomData();

        if (rooms.Length > 0)
        {
            foreach (var room in rooms)
            {
                if (GUILayout.Button($"{room.name}({room.playerCount}/{room.maxPlayers})", GUI.skin.box, GUILayout.Width(360)))
                {
                    if (!room.customParameters["password"].Equals("empty"))
                    {
                        Debug.Log($"Room:[{room.name}] is private room.");
                    }
                    MonobitNetwork.JoinRoom(room.name);
                }
            }
        }
        else
        {
            GUILayout.Label("No rooms");
        }
        GUILayout.EndScrollView();

        if (GUILayout.Button("Back title"))
        {
            this.OnClickBack();
        }

        // ステータスの表示.
        var isHostDisplay = MonobitNetwork.isHost ? "(Host)" : "";

        GUILayout.Label(
            MonobitNetwork.inRoom
            ? $"Room: {MonobitNetwork.room.name} {MonobitNetwork.room.playerCount}/{MonobitNetwork.room.maxPlayers} players {isHostDisplay}"
            : $"Rooms count: {MonobitNetwork.roomCountInLobby} InLobby Players count: {MonobitNetwork.clientCountInLobby}"
            );
    }
예제 #22
0
        /**
         * ルーム内でのGUI操作.
         */
        private void OnGUI_InRoom()
        {
            // 自身のプレイヤーIDの表示
            GUILayout.Label("Your ID : " + MonobitNetwork.player.ID);

            // ルーム内に存在するプレイヤー数の表示
            GUILayout.Label("PlayerCount : " + MonobitNetwork.room.playerCount + " / " + ((MonobitNetwork.room.maxPlayers == 0) ? "-" : MonobitNetwork.room.maxPlayers.ToString()));

            // ルームの入室制限可否設定の表示
            GUILayout.Label("Room isOpen : " + MonobitNetwork.room.open);

            // ルーム作成者が入力した値
            GUILayout.Label("Room Owner Numeric Value : " + MonobitNetwork.room.customParameters["Value"]);

            // 自身が入力した値
            GUILayout.Label("My Skill Level : " + baseValue);

            // 制限時間の表示
            if (isGameStart)
            {
                GUILayout.Label("Rest Frame : " + this.battleEndFrame);
            }

            // 部屋からの離脱
            if (GUILayout.Button("Leave Room", GUILayout.Width(150)))
            {
                MonobitNetwork.LeaveRoom();
            }

            // ホストの場合
            if (MonobitNetwork.isHost)
            {
                // ゲームスタート
                if (!isGameStart && GUILayout.Button("Start Game", GUILayout.Width(150)))
                {
                    this.isGameStart = true;
                    // room.open = false;
                    monobitView.RPC("GameStart", MonobitTargets.All, null);
                }

                // バトル終了
                if (this.battleEndFrame <= 0)
                {
                    // room.open = true;

                    // 部屋から離脱する
                    monobitView.RPC("LeaveRoomAll", MonobitTargets.All, null);
                }
            }

            // 他にルームが作成されている場合
            if (MonobitNetwork.GetRoomData() != null && MonobitNetwork.GetRoomData().Length >= 1)
            {
                // 他の部屋に入室
                if (GUILayout.Button("Enter Another Room", GUILayout.Width(150)))
                {
                    // 一旦部屋から離脱する
                    MonobitNetwork.LeaveRoom();
                    isEnterAnotherRoom = true;
                }
            }
        }
예제 #23
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");
            }
        }
    }
예제 #24
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();

                // チャット発言文の入力
                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
            {
                // ルーム一覧を検索
                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
        {
            // デフォルトロビーへの自動入室を許可する
            MonobitNetwork.autoJoinLobby = true;
        }
    }