public async Task RequestPickItem(RequestPickItem request) { request.ConnectionId = Context.ConnectionId; BaseResponse <DOItem> response = await _service.PickItem(request); _ = Clients.Clients(request.ConnectionId).ReplyPickItem(response); }
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); }