예제 #1
0
        public async Task <ResponseGameViewModel> CreateNewGame()
        {
            RequestGameViewModel request = new RequestGameViewModel {
                botQuantity = 3, roundQuantity = 5, User = new ViewModelsLayer.ViewModels.UserViewModels.RequestUserViewModel {
                    Nickname = "ass228"
                }
            };

            return(await service.CreateNewGame(request));
        }
예제 #2
0
        public async Task <ResponseGameViewModel> CreateNewGame(RequestGameViewModel request)
        {
            var game  = new Game();
            var cards = await _cardRepository.Get();

            cards = this.Reshuffle(cards.ToList());
            var userGames    = new List <UserGames>();
            var bots         = new List <User>();
            var peoplePlayer = await _userRepository.Get(request.User.Nickname);

            var dealer = await _userRepository.Get("Dealer");

            game.RoundQuantity = request.roundQuantity;
            await _gameRepository.Create(game);

            if (request.botQuantity >= 0 && request.botQuantity <= 5)
            {
                for (int i = 0; i < request.botQuantity; i++)
                {
                    var bot = new User {
                        Nickname = "Bot#" + (i + 1), UserRole = UserRole.BotPlayer
                    };
                    bots.Add(bot);
                    _handCardsProvider.Add(new HandCards {
                        Cards = new List <Card>(), User = bot
                    });
                }
            }

            if (dealer != null && peoplePlayer != null)
            {
                _handCardsProvider.Add(new HandCards {
                    Cards = new List <Card>(), User = peoplePlayer
                });
                _handCardsProvider.Add(new HandCards {
                    Cards = new List <Card>(), User = dealer
                });
            }
            if (dealer == null && peoplePlayer == null)
            {
                peoplePlayer = new User {
                    Nickname = request.User.Nickname, UserRole = UserRole.PeoplePlayer
                };
                dealer = new User {
                    Nickname = "Dealer", UserRole = UserRole.Dealer
                };
                await _userRepository.CreateRange(new List <User> {
                    peoplePlayer, dealer
                });

                _handCardsProvider.Add(new HandCards {
                    Cards = new List <Card>(), User = peoplePlayer
                });
            }

            await _userRepository.CreateRange(bots);

            for (int i = 0; i < bots.Count; i++)
            {
                userGames.Add(new UserGames {
                    GameId = game.Id, UserId = bots[i].Id
                });
            }
            userGames.Add(new UserGames {
                GameId = game.Id, UserId = peoplePlayer.Id
            });
            userGames.Add(new UserGames {
                GameId = game.Id, UserId = dealer.Id
            });

            await _userGamesRepository.CreateRange(userGames);

            _deckProvider.Add(new Deck {
                Cards = cards.ToList(), DiscardPile = new List <Card>()
            });
            await CreateNewRound(game.Id);

            ResponseGameViewModel result = await GameResponse(game.Id);

            return(result);
        }