Ejemplo n.º 1
0
        private async Task CreateBots(int gameId, CreateNewGameGameView createNewGameGameView)
        {
            List <Player> bots = await _playerRepository.GetAllFreeBots(createNewGameGameView.CountBots);

            int countBots = bots.Count;

            if (createNewGameGameView.CountBots <= countBots)
            {
                var playerGames = new List <PlayerGame>();

                for (int i = 0; i < createNewGameGameView.CountBots; i++)
                {
                    var playerGame = new PlayerGame();

                    playerGame.GameId   = gameId;
                    playerGame.PlayerId = bots[i].Id;

                    playerGames.Add(playerGame);
                }

                await _playerGameRepository.CreateMultiple(playerGames);
            }

            if (createNewGameGameView.CountBots > countBots)
            {
                var playerGames = new List <PlayerGame>();

                int difference = createNewGameGameView.CountBots - countBots;

                for (int i = 0; i < countBots; i++)
                {
                    var playerGame = new PlayerGame();

                    playerGame.GameId   = gameId;
                    playerGame.PlayerId = bots[i].Id;

                    playerGames.Add(playerGame);
                }

                List <string> names = Enum.GetNames(typeof(BotName)).ToList();

                var random = new Random();

                var listBots = new List <Player>();

                for (int i = 0; i < difference; i++)
                {
                    string nickName = names[random.Next(GameConstants.FIRST_ELEMENT_IN_BOTS_NAME_ENUM, names.Count)];

                    var bot = new Player();

                    bot.NickName   = nickName;
                    bot.PlayerRole = PlayerRole.Bot;
                    bot.Coins      = GameConstants.BOTS_COINS;

                    listBots.Add(bot);
                }

                await _playerRepository.CreateMultiplePlayersAndReturnTheirIds(listBots);

                foreach (Player bot in listBots)
                {
                    var playerGame = new PlayerGame();

                    playerGame.GameId   = gameId;
                    playerGame.PlayerId = bot.Id;

                    playerGames.Add(playerGame);
                }

                await _playerGameRepository.CreateMultiple(playerGames);
            }
        }