示例#1
0
    // Update is called once per frame
    void Update()
    {
        if (!isPlayable)
        {
            return;
        }

        message = fielder.GetMessage();
        if (message == null || message.Equals(""))
        {
            return;
        }

        //SendMessageBox(message);
        SendMessageBox2(message);
        connector.AddAsync(messageKey, message);
        fielder.CleanInputField("メッセージ", "");
    }
示例#2
0
    // Update is called once per frame
    void Update()
    {
        switch (stateNo)
        {
        case (int)KeeperState.NameReception:
            playerName = textFielder.GetMessage();
            if (playerName == null || playerName.Length > nameMaxLength)
            {
                return;
            }

            stateNo = (int)KeeperState.RoomReception;
            textFielder.StartCoroutine(textFielder.SwitchDialog(true, string.Format(
                                                                    "OK、" + playerName
                                                                    + "さん。プレイしたい部屋はどこだい。({0}文字以内)",
                                                                    nameMaxLength)));
            textFielder.CleanInputField("部屋名を入力してね", "TestRoom");
            break;

        case (int)KeeperState.RoomReception:
            roomName = textFielder.GetMessage();
            if (roomName == null || roomName.Length > nameMaxLength)
            {
                return;
            }
            Debug.Log(roomName);
            //connector.ReadQuery(roomName + "/" + playersDir, true);
            connector.ReadQuery(roomName, true);    //直下読み込み
            stateNo = (int)KeeperState.Inquiry;
            textFielder.StartCoroutine(textFielder.SwitchDialog(true,
                                                                "問い合わせ中..."));
            break;

        case (int)KeeperState.Inquiry:
            if (connector.SnapData == null)
            {
                return;
            }

            if (connector.SnapData.Value == null)
            {
                MakeRoom();
                playerNo   = 0;
                roomParent = true;
                stateNo    = (int)KeeperState.Wanting;
                connector.AddAsync(roomName + "/" + roomStateDir, (int)RoomState.Wanting);
            }
            else if (connector.SnapData.Child(playersDir).ChildrenCount
                     >= GameMaster.maxPlayers ||
                     connector.SnapData.Child(roomStateDir).GetRawJsonValue().Equals("1"))
            {
                textFielder.StartCoroutine(textFielder.SwitchDialog(true, string.Format(
                                                                        "おっと、そこは満席みたいだな。他の部屋はどうだい。({0}文字以内)",
                                                                        nameMaxLength)));
                textFielder.CleanInputField("部屋名を入力してね", roomName);
                stateNo = (int)KeeperState.RoomReception;
                connector.RemoveReadData();
                return;
            }
            else
            {
                EnterRoom();
                playerNo   = (int)connector.SnapData.Child(playersDir).ChildrenCount;
                roomParent = false;
                stateNo    = (int)KeeperState.PlayWaiting;
            }

            connector.RemoveReadData();
            connector.AddAsync(roomName + "/" + playersDir + "/" + playerNo.ToString(),
                               playerName);
            break;

        case (int)KeeperState.Wanting:
            string command = textFielder.GetMessage();
            if (!onReady)
            {
                return;
            }
            if ((command == null || !command.Equals("S")) &&
                !Input.GetKeyDown(KeyCode.S))
            {
                return;
            }

            connector.AddAsync(roomName + "/" + roomStateDir, (int)RoomState.Playing);
            stateNo = (int)KeeperState.SetupGameMaster;
            break;

        case (int)KeeperState.SetupGameMaster:
            if (playerNameArray.Length > GameMaster.maxPlayers)
            {
                playerNameArray = playerNameArray.Take(GameMaster.maxPlayers).ToArray();
            }
            master.InitializeDB(nowPlayerCnt, roomParent, playerNameArray, playerNo,
                                connector.MyReference.Child(roomName + "/Master"));
            stateNo = (int)KeeperState.Idle;
            connector.MyReference.Child(roomName + "/" + playersDir).ChildRemoved
                += (object sender, Firebase.Database.ChildChangedEventArgs args) =>
                {
                if (stateNo != (int)KeeperState.Idle)
                {
                    return;
                }

                InterruptGame();
                };
            textFielder.StartCoroutine(textFielder.SwitchDialog(false));
            textFielder.CleanInputField("メッセージ", "");
            break;
        }
    }