Exemple #1
0
        /// <summary>
        /// プレイヤー名を適用する。
        /// </summary>
        private void RequestedApplyPlayerName(NetworkConnection connection, ApplyPlayerName.Request request)
        {
            var msg = new ApplyPlayerName.Response();
            var id  = connection.connectionId;

            try {
                // プレイヤーが存在しているかどうかチェック
                if (!playerDataHolder.ExistPlayerData(id))
                {
                    Debug.LogWarningFormat("[RequestedApplyPlayerName] 存在しないプレイヤーが指定されました\nid : {0}", id);
                    msg.Result = ApplyPlayerName.Result.FailureNonExistPlayer;
                    connection.Send(msg);
                    return;
                }

                var playerData = playerDataHolder.GetPlayerData(id);
                playerData.ApplyPlayerName(request.PlayerName);

                msg.Result = ApplyPlayerName.Result.Succeed;
                connection.Send(msg);
            } catch (Exception e) {
                Debug.LogErrorFormat("[RequestedApplyPlayerName] 予期せぬエラーが発生しました\nid : {0}", id);
                Debug.LogException(e);
                msg.Result    = ApplyPlayerName.Result.FailureUnknown;
                msg.Exception = e;
                connection.Send(msg);
            }
        }
Exemple #2
0
        /// <summary>
        /// スタートボタンクリック時の処理。
        /// </summary>
        private async UniTask OnClickStartAsync()
        {
            // サーバと接続を開始する
            var(isSuccess, errorCode) = await new ConnectClient().ConnectClientAsync();

            if (isSuccess)
            {
                // 初期の名前をサーバに伝える
                var request = new ApplyPlayerName.Request {
                    PlayerName = PlayerPrefsManager.PlayerName
                };
                var response = await new ApplyPlayerNameApi().Request(request);

                // レスポンスが成功ならロビーステートに遷移する
                if (response.Result == ApplyPlayerName.Result.Succeed)
                {
                    parentStateMachine.RequestChangeState(GroupState.Lobby);
                }
                else
                {
                    Debug.LogError("サーバとの接続に失敗しました");
                }
            }
            else
            {
                Debug.LogError("サーバとの接続に失敗しました " + errorCode);
            }
        }
        /// <summary>
        /// プレイヤー名を適用する。
        /// </summary>
        /// <param name="playerName">適用したいプレイヤー名</param>
        private void OnClickApplyPlayerName(string playerName)
        {
            // ActionにUniTaskを直接紐づけることは出来ないので、内部でUniTaskの処理を呼び出す
            ApplyPlayerNameAsync().Forget();

            async UniTask ApplyPlayerNameAsync()
            {
                // ApplyPlayerNameで渡されたplayerNameを使っている(クロージャという概念)が、ややこしいので気にしないで
                var request = new ApplyPlayerName.Request {
                    PlayerName = playerName
                };
                var response = await new ApplyPlayerNameApi().Request(request);

                // レスポンスが成功ならビューにも名前を適用して、ロビーステートを一つ前に戻す
                if (response.Result == ConnectData.ApplyPlayerName.Result.Succeed)
                {
                    joinRoomPresenter.SetPlayerName(playerName);
                    StateMachine.RequestBackState();
                }
            }
        }
Exemple #4
0
 /// <summary>
 /// プレイヤー名を適用する。
 /// </summary>
 public void RequestApplyPlayerName(ApplyPlayerName.Request request)
 {
     NetworkClient.connection.Send(request);
 }