示例#1
0
        public async Task StartGame(StartGameParams @params)
        {
            try
            {
                var result = _gameTableService.StartGame(Context.User.GetUserId());

                await NotifyGameStarted(result);

                await Clients.Caller.ReceiveGameStartResult(new ReceiveGameStartResultParams()
                {
                    Succeeded       = true,
                    MoverId         = result.MoverId,
                    RequestId       = @params.RequestId,
                    PlayerCardsInfo = result.PlayerCards.Select(pc => new PlayerCardsInfoDto()
                    {
                        Cards      = Context.User.GetUserId() == pc.PlayerId ? pc.Cards : null,
                        CardsCount = pc.CardsCount,
                        PlayerId   = pc.PlayerId
                    }).ToList()
                });
            }
            catch (Exception ex)
            {
                _logger.LogError(ex, $"Ошибка старта игры. Игрок с Id = {Context.User.GetUserId()}");

                await Clients.Caller.ReceiveGameStartResult(new ReceiveGameStartResultParams()
                {
                    Succeeded = false,
                    RequestId = @params.RequestId
                });
            }
        }
示例#2
0
        public Promise <ReceiveGameStartResultParams> StartGame(StartGameParams @params)
        {
            if (_isDisposed)
            {
                throw new ObjectDisposedException("Ресурсы объекта были освобождены");
            }

            if (_hubConnection == null)
            {
                throw new Exception("Подключение еще не было создано");
            }

            if (_hubConnection.State != HubConnectionState.Connected)
            {
                throw new Exception($"Подключение еще не установлено. Статус - {_hubConnection.State}");
            }

            var promise = new Promise <ReceiveGameStartResultParams>(@params.RequestId, () =>
            {
                _hubConnection.InvokeAsync(nameof(IMainHubApi.StartGame), @params);
            });

            ReceivedGameStartResult += promise.OnCopleted;

            return(promise);
        }
示例#3
0
        public GameParams StartGame(StartGameParams inParams)
        {
            var randomStartGame = new GameParams();

            randomStartGame = gameOfLifeHelper.MakeRandomBoardgame(inParams, randomStartGame);

            var nextTick = new GameParams();

            nextTick.GameRows = gameOfLifeHelper.GameTick(inParams.Size, randomStartGame.GameRows);
            nextTick.Size     = inParams.Size;
            return(nextTick);
        }
示例#4
0
        public GameParams MakeRandomBoardgame(StartGameParams inParams, GameParams gameStartParams)
        {
            Random randNum = new Random();

            for (int r = 0; r < inParams.Size; r++)
            {
                var row = new int[inParams.Size];
                for (int c = 0; c < inParams.Size; c++)
                {
                    row[c] = randNum.Next(0, 2);
                }
                gameStartParams.GameRows.Add(row);
            }

            return(gameStartParams);
        }