예제 #1
0
        /// <summary>
        /// 指定した部屋の詳細な情報を取得する。
        /// </summary>
        private void RequestedGetRoomDetailData(NetworkConnection connection, GetRoomDetailData.Request request)
        {
            var msg = new GetRoomDetailData.Response();
            var id  = connection.connectionId;

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

                // 部屋が存在しているかどうかチェック
                if (!roomDataHolder.ExistRoomByGuid(request.RoomGuid))
                {
                    Debug.LogWarningFormat("[RequestedGetRoomDetailData] 存在しない部屋が指定されました\nid : {0}", id);
                    msg.Result = GetRoomDetailData.Result.FailureNonExistRoom;
                    connection.Send(msg);
                    return;
                }

                var roomData = roomDataHolder.GetRoomDataByContainPlayer(id);
                msg.Result   = GetRoomDetailData.Result.Succeed;
                msg.IsHost   = id == roomData.HostConnectionId;
                msg.RoomData = roomData.CreateRoomDetailData();
                msg.GameTime = roomData.CreateGameTimeSendData();
                msg.WolfNum  = roomData.CreateWolfNumSendData();
                connection.Send(msg);
            } catch (Exception e) {
                Debug.LogErrorFormat("[RequestedGetRoomDetailData] 予期せぬエラーが発生しました\nid : {0}", id);
                Debug.LogException(e);
                msg.Result    = GetRoomDetailData.Result.FailureUnknown;
                msg.Exception = e;
                connection.Send(msg);
            }
        }
예제 #2
0
 private void ResponseGetRoomDetailData(NetworkConnection connection, GetRoomDetailData.Response response)
 {
     OnGetRoomDetailDataResponseEvent?.Invoke(response);
 }