public void ProgressReturnNotFoundWhenQuestConfigNotFound()
        {
            // Arrange
            var configuration = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("config.json")
                                .Build();

            _config             = Options.Create(configuration.Get <QuestConfiguration>());
            _config.Value.Quest = null;

            var controller = new ProgressController(_fakePlayerRepository, _config);

            var bet = new PlayerBet
            {
                PlayerId      = "P01",
                PlayerLevel   = 2,
                ChipAmountBet = 10
            };

            //Act
            var result = controller.Progress(bet);

            //Assert
            var notFoundObjectResult = Assert.IsType <NotFoundObjectResult>(result);

            Assert.Null(notFoundObjectResult.Value);
        }
        public void ProgressReturnPlayerProgressWhenBetIsValid()
        {
            // Arrange
            var configuration = new ConfigurationBuilder()
                                .SetBasePath(Directory.GetCurrentDirectory())
                                .AddJsonFile("config.json")
                                .Build();

            _config = Options.Create(configuration.Get <QuestConfiguration>());

            var controller = new ProgressController(_fakePlayerRepository, _config);

            var bet = new PlayerBet
            {
                PlayerId      = "P01",
                PlayerLevel   = 2,
                ChipAmountBet = 10
            };

            var player         = _fakePlayerRepository.GetPlayer(bet.PlayerId);
            var expectedResult = CalculateProgress(_config.Value, player, bet);

            //Act
            var result = controller.Progress(bet);

            //Assert
            var okObjectResult = Assert.IsType <OkObjectResult>(result);
            var model          = Assert.IsType <PlayerProgress>(okObjectResult.Value);

            Assert.Equal(expectedResult.TotalQuestPercentCompleted, model.TotalQuestPercentCompleted);
            Assert.True(expectedResult.MilestonesCompleted.All(shouldItem => model.MilestonesCompleted.Any(isItem => isItem.MilestoneIndex == shouldItem.MilestoneIndex && isItem.ChipsAwarded == shouldItem.ChipsAwarded)));
            Assert.Equal(expectedResult.QuestPointsEarned, model.QuestPointsEarned);
        }
示例#3
0
 private bool isMyBetOn()
 {
     if (anyBetsOnCurrentFieldExists())
     {
         PlayerBet myBet = allBets[fieldChooser.getFieldName()].Find(x => x.playerId.Contains(PlayerPrefs.GetString("Id")));
         return(!object.Equals(myBet, null));
     }
     return(false);
 }
示例#4
0
    private void Start()
    {
        standButton.onClick.AddListener(Stand);
        hitButton.onClick.AddListener(Hit);
        doubleButton.onClick.AddListener(Double);
        surrenderButton.onClick.AddListener(Surrender);

        player    = GetComponent <Player>();
        playerBet = GetComponent <PlayerBet>();
    }
示例#5
0
 public void setCurrentBet()
 {
     if (anyBetsOnCurrentFieldExists())
     {
         PlayerBet myBet = allBets[fieldChooser.getFieldName()].Find(x => x.playerId.Contains(PlayerPrefs.GetString("Id")));
         if (object.Equals(myBet, null))
         {
             hudController.resetBetValueToCurrent();
         }
         else
         {
             hudController.setBetValueToPlacedBetValue(myBet.GetValue());
         }
     }
 }
示例#6
0
 public void bet()
 {
     if (isMyBetOn())
     {
         if (anyBetsOnCurrentFieldExists())
         {
             PlayerBet myBet = allBets[fieldChooser.getFieldName()].Find(x => x.playerId.Contains(PlayerPrefs.GetString("Id")));
             hudController.setBetValueToPlacedBetValue(myBet.GetValue());
             cancelBet();
         }
     }
     else
     {
         doBet();
     }
 }
示例#7
0
    public void cancelBet()
    {
        var fieldName       = fieldChooser.getFieldName();
        var tempPlayersBets = new List <PlayerBet>();

        if (anyBetsOnCurrentFieldExists())
        {
            Debug.Log("Bets size " + allBets[fieldName].Count);
            PlayerBet myBet = allBets[fieldName].Find(x => x.playerId.Contains(PlayerPrefs.GetString("Id")));
            StartCoroutine(cancelRouletteBetCorutine(getCancelBetRequestParams()));
            allBets[fieldName].Remove(myBet);
            Debug.Log("Bets size after rm " + allBets[fieldName].Count);
            Debug.Log("REMOVED!!!!");
            CursorView.setAsHasntYourBet(cursor);
            if (allBets[fieldName].Count == 0)
            {
                var betCoins = betsCoins.Find(x => object.Equals(x.transform.position, GameObject.Find(fieldName).transform.position));
                betsCoins.Remove(betCoins);
                allBets.Remove(fieldName);
                Destroy(betCoins);
            }
            hudController.actualizeHudAfterBetCanceled(myBet.GetValue());
        }
    }
示例#8
0
        /// <summary>
        /// Receive a SocketMessage and parse it out to determine the betId and bet value requested.
        ///
        /// Search for the related bets and playerBets and add them to the database.
        /// </summary>
        /// <param name="sm"></param>
        /// <returns></returns>
        public string AddBet(SocketMessage sm)
        {
            var stringSplit = sm.Content.Split(' ');
            var betId       = Int32.Parse(stringSplit[1]);
            var betValue    = Int32.Parse(stringSplit[2]);
            var betPoints   = Int32.Parse(stringSplit[3]);
            var bet         = _bettingGame.Bets.Find(b => b.Id == betId);
            var betterId    = (Int64)sm.Author.Id;
            var betterName  = sm.Author.Username;

            if (bet == null)
            {
                return($"Bet `{betId}` does not exist");
            }

            if (!bet.IsActive)
            {
                return($"Bet `{bet.Id}` - `{bet.Name}` is no longer active");
            }

            if (bet.CloseDate < DateTime.Today)
            {
                return($"Bet `{bet.Id}` - `{bet.Name}` is closed for betting");
            }

            var better = _bettingGame.Betters.Find(p => p.Id == betterId) ?? new Better
            {
                Id          = betterId,
                Name        = betterName,
                Points      = 1000,
                BetsWon     = 0,
                WonBetsList = new Dictionary <int, string>()
            };

            var playerBet = _bettingGame.PlayerBets.Find(b => b.BetId == betId && b.BetterId == better.Id);

            if (playerBet == null)
            {
                if (betPoints > better.Points)
                {
                    return
                        ($"Your bet of {betPoints} was not added to Bet `{bet.Id}` - `{bet.Name}`\n" +
                         $"You only have {better.Points}");
                }

                if (betPoints < 100)
                {
                    return
                        ($"Your bet of {betPoints} was not added to Bet `{bet.Id}` - `{bet.Name}`\n" +
                         "Minimum bet is 100");
                }

                playerBet = new PlayerBet
                {
                    BetterId = better.Id,
                    BetId    = bet.Id,
                    Bet      = betValue,
                    Points   = betPoints
                };

                better.Points -= playerBet.Points;
                _bettingGame.Betters.Add(better);
                bet.BetPool += playerBet.Points;

                _bettingGame.PlayerBets.Add(playerBet);
                SerializeData(_bettingGame);
                return($"Your bet of {playerBet.Bet} has been added to Bet `{bet.Id}` - `{bet.Name}`");
            }

            return($"You already have a bet of {playerBet.Bet} on `{bet.Id}` - `{bet.Name}`");
        }
示例#9
0
        public IActionResult Progress([FromBody] PlayerBet bet)
        {
            if (bet == null)
            {
                return(BadRequest());
            }

            var player = _playerRepository.GetPlayer(bet.PlayerId);

            if (player != null && _configuration.Quest != null)
            {
                var totalPointNeeded = _configuration.Quest.QuestPointNeeded;
                var questPointEarned = bet.ChipAmountBet * _configuration.RateFromBet + bet.PlayerLevel * _configuration.LevelBonusRate;

                var questMilestones     = _configuration.Milestones.OrderBy(x => x.Index);
                var milestonesCompleted = new List <MilestoneCompleted>();

                var lastMilestoneIndex = 0;
                var totalQuestPoint    = questPointEarned;
                var percentCompleted   = questPointEarned / totalPointNeeded * 100;

                //Only take player data into account if player's current quest is active
                if (player.QuestId == _configuration.Quest.Id)
                {
                    totalQuestPoint    = questPointEarned + player.QuestPoint;
                    lastMilestoneIndex = player.MilestoneIndex;
                    percentCompleted   = (questPointEarned + player.QuestPoint) / totalPointNeeded * 100;
                }

                var projectedMilestoneIndex = questMilestones.Last(x => x.TotalQuestPoint <= totalQuestPoint).Index;

                foreach (Milestone milestone in questMilestones)
                {
                    if (milestone.Index > lastMilestoneIndex && milestone.Index <= projectedMilestoneIndex)
                    {
                        milestonesCompleted.Add(new MilestoneCompleted
                        {
                            MilestoneIndex = milestone.Index,
                            ChipsAwarded   = milestone.ChipsAwarded
                        });
                    }
                }

                var result = new PlayerProgress
                {
                    QuestPointsEarned          = questPointEarned,
                    TotalQuestPercentCompleted = percentCompleted > 100 ? 100 : percentCompleted,
                    MilestonesCompleted        = milestonesCompleted
                };

                player.QuestPoint     = totalQuestPoint;
                player.QuestId        = _configuration.Quest.Id;
                player.MilestoneIndex = projectedMilestoneIndex;
                _playerRepository.Update(player);
                _playerRepository.SaveChanges();

                return(Ok(result));
            }
            else
            {
                return(NotFound(null));
            }
        }
        PlayerProgress CalculateProgress(QuestConfiguration configuration, Player player, PlayerBet bet)
        {
            var totalPointNeeded = configuration.Quest.QuestPointNeeded;
            var questPointEarned = bet.ChipAmountBet * configuration.RateFromBet + bet.PlayerLevel * configuration.LevelBonusRate;

            var questMilestones     = configuration.Milestones.OrderBy(x => x.Index);
            var milestonesCompleted = new List <MilestoneCompleted>();

            var lastMilestoneIndex = 0;
            var totalQuestPoint    = questPointEarned;
            var percentCompleted   = questPointEarned / totalPointNeeded * 100;

            if (player.QuestId == configuration.Quest.Id)
            {
                totalQuestPoint    = questPointEarned + player.QuestPoint;
                lastMilestoneIndex = player.MilestoneIndex;
                percentCompleted   = (questPointEarned + player.QuestPoint) / totalPointNeeded * 100;
            }

            var projectedMilestoneIndex = questMilestones.Last(x => x.TotalQuestPoint <= totalQuestPoint).Index;

            foreach (Milestone milestone in questMilestones)
            {
                if (milestone.Index > lastMilestoneIndex && milestone.Index <= projectedMilestoneIndex)
                {
                    milestonesCompleted.Add(new MilestoneCompleted
                    {
                        MilestoneIndex = milestone.Index,
                        ChipsAwarded   = milestone.ChipsAwarded
                    });
                }
            }

            var result = new PlayerProgress
            {
                QuestPointsEarned          = questPointEarned,
                TotalQuestPercentCompleted = percentCompleted > 100 ? 100 : percentCompleted,
                MilestonesCompleted        = milestonesCompleted
            };

            return(result);
        }