public void EnterRoomTest()
        {
            //Arrange
            Player creator;
            var    room = _gameCenter.CreateNewRoom(_level, new NoLimitHoldem(), out creator);

            EnterRoomRequest request = new EnterRoomRequest()
            {
                Room        = room.GetHashCode(),
                UserName    = _user.UserName,
                SecurityKey = _securityKey,
            };

            //Act
            var             act = _ctrl.EnterRoom(request);
            EnterRoomResult actContent;
            var             hasContent = act.TryGetContentValue(out actContent);

            //Assert
            TestContext.WriteLine("error message: '{0}'", (actContent != null && actContent.ErrorMessage != "") ? actContent.ErrorMessage : "null");
            Assert.AreEqual(HttpStatusCode.OK, act.StatusCode, "status code");
            Assert.IsTrue(hasContent, "has content");
            Assert.AreEqual("", actContent.ErrorMessage, "error message");
            Assert.AreEqual(true, actContent.Success, "success");
            Assert.AreNotEqual(default(int?), actContent.Player, "player not default value");
            Assert.IsNotNull(actContent.Player, "player not null");


            TestContext.WriteLine("\nContent:");
            foreach (var property in actContent.GetType().GetProperties())
            {
                TestContext.WriteLine("{0} : {1}", property.Name, property.GetValue(actContent));
            }
        }
        public static void UserEnterRoom(int user_id, int room_type, int room_id)
        {
            EnterRoomRequest request = new EnterRoomRequest
            {
                user_id   = user_id,
                room_type = room_type,
                room_id   = room_id,
            };

            Message message = new Message();

            message.PackBuffer(ServiceID.ROOM_ENTER_ROOM_SERVICE, JsonTools.SerializeToString(request));
            NetworkMgr.Instance.Send(message);
        }
Exemple #3
0
        public HttpResponseMessage EnterRoom(EnterRoomRequest request)
        {
            var result = new EnterRoomResult();

            try
            {
                result = service.EnterRoom(request);
            }
            catch (Exception e)
            {
                result.ErrorMessage = e.Message;
                result.Success      = false;
                return(Request.CreateResponse(HttpStatusCode.InternalServerError, result));
            }

            return(Request.CreateResponse(HttpStatusCode.OK, result));
        }
Exemple #4
0
        public EnterRoomResult EnterRoom(EnterRoomRequest request)
        {
            var result = new EnterRoomResult();

            try
            {
                var room = _cache.RefreshAndGet(
                    Rooms,
                    request.Room,
                    new RoomNotFoundException(string.Format("Requested room ID {0} not found", request.Room))
                    );


                var user = _cache.RefreshAndGet(
                    Users,
                    request.UserName,
                    new UserNotFoundException(string.Format("User ID {0} not found", request.UserName))
                    );
                UserManager.SecurityCheck(request.SecurityKey, user);

                result.Player              = user.EnterRoom(room).GetHashCode();
                result.RoomID              = room.GetHashCode();
                result.Name                = room.Preferences.Name;
                result.BuyInCost           = room.Preferences.BuyInCost;
                result.MinimumBet          = room.Preferences.MinimumBet;
                result.Antes               = room.Preferences.AntesValue;
                result.MinNumberOfPlayers  = room.Preferences.MinNumberOfPlayers;
                result.MaxNumberOfPlayers  = room.Preferences.MaxNumberOfPlayers;
                result.IsSpactatorsAllowed = room.Preferences.IsSpactatorsAllowed;
                if (room.Preferences is GamePreferencesDecorator)
                {
                    result.Limit = ((GamePreferencesDecorator)room.Preferences).Limit;
                }
            }
            catch (PokerException e)
            {
                result.Success      = false;
                result.ErrorMessage = e.Message;
                Logger.Error(e, this);
            }

            return(result);
        }
Exemple #5
0
        public IActionResult Post([FromBody] EnterRoomRequest request)
        {
            // 入室
            var response = DiProvider.GetContainer().GetInstance <EnterRoomReceiver>().Receive(request);

            // 部屋の状態を更新
            var stateReq = DiProvider.GetContainer().GetInstance <UpdateRoomStatusRequest>();

            stateReq.RoomKey = request.RoomKey;
            stateReq.Attach();
            var stateRes = DiProvider.GetContainer().GetInstance <UpdateRoomStatusReceiver>().Receive(stateReq);

            stateRes.Detach();

            // 通知
            this.NotifyEnterRoom(request.RoomKey, request.PlayerName);
            this.NotifyRoomContext(request.RoomKey);

            return(Ok(response));
        }