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); }
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); }
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>(); }
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()); } } }
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(); } }
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()); } }
/// <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}`"); }
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); }