private void StartGame(object parameter) { //nav.EndMainMusic(); dbOps.StartGameTransaction(SelectedPlayers, gameType); PlayGameView dicesView = new PlayGameView(); SelectedViewModel = new DicesViewModel(playerEngine); dicesView.DataContext = SelectedViewModel; }
public async Task <PlayGameView> GetActive(string userId) { var activeGameOfUser = await _playerInGameRepository.GetActiveByUserId(userId); if (activeGameOfUser == null) { throw new CustomServiceException("Active game is doesn`t exist! Play new game."); } var activeGame = activeGameOfUser.Game; var playerStep = await _playerStepRepository.GetByGameId(activeGame.Id); var boSteps = await _botStepRepository.GetByGameId(activeGame.Id); var playerInGame = await _playerInGameRepository.GetByGameId(activeGame.Id); var botList = boSteps .Select(x => x.Bot) .Distinct() .ToList(); var groupedBotSteps = boSteps.GroupBy(x => x.BotId); var response = new PlayGameView() { NumberOfBots = activeGame.NumberOfBots, Status = activeGame.Status, Winner = activeGame.Winner, Player = new PlayerPlayGameView() { Name = playerInGame .Select(x => x.Player.Name) .FirstOrDefault(), Cards = playerStep .Select(cardPlayGameViewItem => new CardPlayGameViewItem() { Rank = cardPlayGameViewItem.Rank, Suit = cardPlayGameViewItem.Suit }) .ToList() }, Bots = groupedBotSteps .Select(botPlayGameViewItem => new BotPlayGameViewItem { Name = botList.FirstOrDefault(bot => bot.Id == botPlayGameViewItem.Key).Name, Cards = botPlayGameViewItem .Select(cardPlayGameViewItem => new CardPlayGameViewItem() { Rank = cardPlayGameViewItem.Rank, Suit = cardPlayGameViewItem.Suit }) .ToList() }) .ToList() }; return(response); }
//Metod för att återställa tärningarnas värde till 0 inför ny runda private void ResetDices() { count = 0; for (int i = 0; i < Dices.Count; i++) { Dices[i].DiceValue = 0; Dices[i].IsDiceEnabled = true; Dices[i].DiceImage = null; Dices[i].DiceHasValue = false; } throwsLeft = 3; SetThrowsLeft(throwsLeft); pgv = new PlayGameView(1); }
public DicesViewModel(PlayerEngine _playerEngine) { Player = new Player(); playerEngine = _playerEngine; dbOps = new DbOperations(); random = new Random(); gameType = playerEngine.SetGameType(); ActivePlayers = playerEngine.SetPlayers(); ActivePlayer = playerEngine.SetActivePlayer(); GenerateDices(); GetGameEngine(); DiceImages(); SetWarningTimer(); SetEndTimer(); pgv = new PlayGameView(0); count = 0; throwsLeft = 3; gameEnded = false; SetThrowsLeft(throwsLeft); SaveDiceCommand = new RelayCommand(SaveDice, CanSaveDices); RollDicesCommand = new RelayCommand(RollDices, IsTriesEnabled); Ones = new RelayCommand(ChooseScoreCategory, IsOnesEnabled); Twos = new RelayCommand(ChooseScoreCategory, IsTwosEnabled); Threes = new RelayCommand(ChooseScoreCategory, IsThreesEnabled); Fours = new RelayCommand(ChooseScoreCategory, IsFoursEnabled); Fives = new RelayCommand(ChooseScoreCategory, IsFivesEnabled); Sixes = new RelayCommand(ChooseScoreCategory, IsSixesEnabled); Pair = new RelayCommand(ChooseScoreCategory, IsPairEnabled); TwoPair = new RelayCommand(ChooseScoreCategory, IsTwoPairEnabled); Threeofakind = new RelayCommand(ChooseScoreCategory, IsThreeOfaKindEnabled); Fourofakind = new RelayCommand(ChooseScoreCategory, IsFourOfaKindEnabled); Smallstraight = new RelayCommand(ChooseScoreCategory, IsSmalLadderEnabled); Largestraight = new RelayCommand(ChooseScoreCategory, IsLargeLadderEnabled); Fullhouse = new RelayCommand(ChooseScoreCategory, IsFullHouseEnabled); Chance = new RelayCommand(ChooseScoreCategory, IsChanceEnabled); Yatzy = new RelayCommand(ChooseScoreCategory, IsYatzyEnabled); QuitGameCommand = new RelayCommand(QuitGame, CanExecuteMethod); }
public async Task <PlayGameView> Play(int numberOfBots, string userId) { if (numberOfBots <= 0) { throw new CustomServiceException("NumberOfBots is 0!"); } var player = await _playerRepository.GetByUserId(userId); var shuffledDeck = await _cardHelper.Shuffle(); var winner = "No one"; var bots = await _botRepository.GetAll(); if (bots.Count == 0) { throw new CustomServiceException("Bots doesn`t exist. Add bots on Data base!"); } var botList = bots .OrderBy(x => Guid.NewGuid()) .Take(numberOfBots) .ToList(); var game = new Game() { NumberOfBots = numberOfBots, Status = StatusType.New, Winner = winner }; var gameId = game.Id; var deck = shuffledDeck .Select(x => new Card() { GameId = gameId, Rank = x.Rank, Suit = x.Suit, }) .ToList(); var playerCard = GetPlayerCard(deck); var playerStep = new PlayerStep() { Rank = playerCard.Rank, Suit = playerCard.Suit, GameId = game.Id }; var botsCards = GetCardsOfBots(botList, deck); var botsSteps = GetBotSteps(botList, botsCards, gameId); var playerInGame = new PlayerInGame() { PlayerId = player.Id, GameId = game.Id, Score = GetCardValue(playerCard.Rank) }; var botInGame = botsSteps .Select(x => new BotInGame() { GameId = game.Id, BotId = x.BotId, Score = GetCardValue(x.Rank) }) .ToList(); var cardPlayGameViewItems = new List <CardPlayGameViewItem> { new CardPlayGameViewItem() { Rank = playerStep.Rank, Suit = playerStep.Suit } }; var groupedBotSteps = botsSteps.GroupBy(x => x.BotId); var response = new PlayGameView() { NumberOfBots = numberOfBots, Status = StatusType.New, Winner = winner, Player = new PlayerPlayGameView() { Name = player.Name, Cards = cardPlayGameViewItems }, Bots = groupedBotSteps .Select(botPlayGameViewItem => new BotPlayGameViewItem { Name = botList.FirstOrDefault(bot => bot.Id == botPlayGameViewItem.Key).Name, Cards = botPlayGameViewItem .Select(cardPlayGameViewItem => new CardPlayGameViewItem() { Rank = cardPlayGameViewItem.Rank, Suit = cardPlayGameViewItem.Suit }) .ToList() }) .ToList() }; await _gameRepository.Create(game); await _playerStepRepository.Create(playerStep); await _botStepRepository.CreateRange(botsSteps); await _playerInGameRepository.Create(playerInGame); await _botInGameRepository.CreateRange(botInGame); await _cardRepository.CreateRange(deck); return(response); }