Esempio n. 1
0
        public async Task <GameLogicViewModel> StartNewGameAuthentificated([FromQuery] string playerName, [FromQuery] int numberOfBots, [FromQuery] string userId)
        {
            GameLogicViewModel result = null;

            result = await _gameLogicService.StartNewGameAuthentificated(playerName, numberOfBots, userId);

            return(result);
        }
Esempio n. 2
0
        public async Task <GameLogicViewModel> StartNewGame([FromQuery] string playerName, [FromQuery] int numberOfBots)
        {
            GameLogicViewModel result = null;

            //var userId = HttpContext.Session.GetString(SessionKeyPlayerId);
            //if (string.IsNullOrEmpty(userId))
            //{
            //    result = await _gameLogicService.StartNewGame(playerName, numberOfBots);
            //    userId = "";
            //    foreach(var player in result.Players)
            //    {
            //        if (!player.IsBot)
            //            userId = player.Id;
            //    }
            //    HttpContext.Session.SetString(SessionKeyPlayerId, userId);
            //}
            //else
            //{
            //    result = await _gameLogicService.StartNewGame(playerName, numberOfBots, userId);
            //}
            result = await _gameLogicService.StartNewGame(playerName, numberOfBots);

            return(result);
        }
Esempio n. 3
0
        public async Task <GameLogicViewModel> StartNewGameRound(string currentGameId)
        {
            try
            {
                var lastRound = await _roundService.RetrieveLastGameRound(currentGameId);

                var result = await ResolveBets(lastRound.Id);

                if (!result)
                {
                    Logger.WriteLogToFile("Could not save bets", "GameLogicService", "StartNewGameRound");
                    return(new GameLogicViewModel
                    {
                        GameId = Guid.Empty.ToString()
                    });
                }
                ///
                var newRoundId = await _roundService.CreateRound(new RoundServiceCreateRoundViewModel()
                {
                    GameId = currentGameId, RoundNumber = lastRound.RoundNumber + 1, Deck = (new DeckLogic()).Stringify()
                });

                var playerModels = await _playerService.RetrieveGamePlayers(currentGameId);

                var thePlayer = playerModels.Where(p => !p.IsBot).First();

                var Players = new List <PlayerLogicViewModel>();

                foreach (var playerModel in playerModels)
                {
                    if (playerModel.Chips > 0)
                    {
                        Players.Add(new PlayerLogicViewModel
                        {
                            Id    = playerModel.Id,
                            Name  = playerModel.Name,
                            IsBot = playerModel.IsBot,
                            Chips = playerModel.Chips,
                            Bet   = 0
                        });
                    }
                }

                #region initialize RoundPlayer values
                for (var i = 0; i < Players.Count; i++)
                {
                    var player = Players.ElementAt(i);
                    player.CurrentRoundPlayerId =
                        await _roundPlayerService.CreateRoundPlayer(new RoundPlayerServiceCreateRoundPlayerViewModel { RoundId = newRoundId, PlayerId = player.Id, Cards = "[]" });
                }
                #endregion

                var viewModel = new GameLogicViewModel();

                viewModel.GameId         = currentGameId;
                viewModel.CurrentRoundId = newRoundId;
                viewModel.Players        = Players;

                return(viewModel);
            }
            catch (Exception ex)
            {
                Logger.WriteLogToFile(ex.Message, "GameLogicService", "StartNewGameRound");
            }
            return(new GameLogicViewModel
            {
                GameId = Guid.Empty.ToString()
            });
        }
Esempio n. 4
0
        public async Task <GameLogicViewModel> StartNewGameAuthentificated(string playerName, int numberOfBots, string userId)
        {
            try
            {
                var userData = await _playerService.RetrievePlayer(userId);

                if (userData.Chips == 0)
                {
                    return(await StartNewGame(playerName, numberOfBots));
                }
                ///
                var newGameId = await _gameService.CreateGame(new GameServiceCreateGameViewModel());

                var newRoundId = await _roundService.CreateRound(new RoundServiceCreateRoundViewModel()
                {
                    GameId = newGameId, RoundNumber = 1, Deck = (new DeckLogic()).Stringify()
                });

                var players = new List <PlayerLogicViewModel> {
                    new PlayerLogicViewModel
                    {
                        Id = await _playerService.CreatePlayer(new PlayerServiceCreatePlayerViewModel()
                        {
                            GameId = newGameId, Name = "Dealer", IsBot = true, Chips = 9000
                        }),
                        Name  = "Dealer",
                        IsBot = true,
                        Chips = 9000,
                        Bet   = 0
                    },
                    new PlayerLogicViewModel
                    {
                        Id    = userId,
                        Name  = userData.Name,
                        IsBot = false,
                        Chips = userData.Chips,
                        Bet   = 0
                    }
                };

                #region create Bots
                var listOfNames = new List <string>()
                {
                    "James",
                    "John",
                    "Robert",
                    "Michael",
                    "William",
                    "David",
                    "Richard",
                    "Charles",
                    "Joseph",
                    "Thomas",
                    "Christopher",
                    "Daniel",
                    "Paul",
                    "Mark",
                    "Donald",
                };
                var RAND = new Random();

                foreach (var name in listOfNames)
                {
                    if (name == playerName)
                    {
                        listOfNames.Remove(name);
                    }
                }

                for (var i = 0; i < numberOfBots; i++)
                {
                    var tmpIndex = RAND.Next(listOfNames.Count);
                    var bot      = new PlayerLogicViewModel
                    {
                        Id = await _playerService.CreatePlayer(new PlayerServiceCreatePlayerViewModel()
                        {
                            GameId = newGameId, Name = listOfNames[tmpIndex], IsBot = true, Chips = 100
                        }),
                        Name  = listOfNames[tmpIndex],
                        IsBot = true,
                        Chips = 100,
                        Bet   = 0
                    };
                    listOfNames.RemoveAt(tmpIndex);

                    players.Add(bot);
                }
                #endregion

                #region initialize RoundPlayer values
                for (var i = 0; i < players.Count; i++)
                {
                    var player = players.ElementAt(i);
                    player.CurrentRoundPlayerId =
                        await _roundPlayerService.CreateRoundPlayer(new RoundPlayerServiceCreateRoundPlayerViewModel
                    {
                        RoundId  = newRoundId,
                        PlayerId = player.Id,
                        Cards    = "[]"
                    });
                }
                #endregion

                var viewModel = new GameLogicViewModel();

                viewModel.GameId         = newGameId;
                viewModel.CurrentRoundId = newRoundId;
                viewModel.Players        = players;

                return(viewModel);
            }
            catch (Exception ex)
            {
                Logger.WriteLogToFile(ex.Message, "GameLogicService", "StartNewGame");
            }
            return(new GameLogicViewModel
            {
                GameId = Guid.Empty.ToString()
            });
        }
Esempio n. 5
0
 public GamePlay()
 {
     InitializeComponent();
     BindingContext = new GameLogicViewModel();
 }