コード例 #1
0
ファイル: BoardHub.cs プロジェクト: hopnx/ccmaster
        public async Task RequestPickItem(RequestPickItem request)
        {
            request.ConnectionId = Context.ConnectionId;
            BaseResponse <DOItem> response = await _service.PickItem(request);

            _ = Clients.Clients(request.ConnectionId).ReplyPickItem(response);
        }
コード例 #2
0
        public async Task <BaseResponse <DOItem> > PickItem(RequestPickItem request)
        {
            BaseResponse <DOItem> response = CreateResponse <DOItem>();

            try
            {
                BaseResponse <BaseResult> check = await CheckGamePlayRequest(request);

                if (!check.OK)
                {
                    response.Message = check.Message;
                    return(response);
                }
                response.OK = true;
                Board board = GetBoard(request.BoardId);

                if (board.Turn != request.Color)
                {
                    return(response); // not your turn
                }
                if (board.Mode == PlayMode.MODE_PLAYER_VS_PLAYER)
                {
                    if ((board.RedPlayer != null && board.RedPlayer.Id == request.PlayerId && request.Color == Color.BLACK) ||
                        (board.BlackPlayer != null && board.BlackPlayer.Id == request.PlayerId && request.Color == Color.RED))
                    {
                        return(response); // unselected
                    }
                }

                Item item = board.PickItem(
                    request.Color,
                    request.Type,
                    request.Row,
                    request.Col);
                if (item == null)
                {
                    response.Message = String.Format("Không tìm thấy quân cờ {0} {1} tại vị trí ({2},{3}",
                                                     request.Color,
                                                     request.Type,
                                                     request.Row,
                                                     request.Col
                                                     );
                    return(response);
                }
                //re-calculate scope
                //board.CalculateScope(item);
                response.Data = item.MapTo();
                response.OK   = true;
            }
            catch (Exception e)
            {
                ExceptionHandle(response, e);
            }
            return(response);
        }