Esempio n. 1
0
        public string ProcessBet(Bet bet)
        {
            if (bet.BettedAmount < 50)
            {
                return("Minimum bet must be 50.");
            }

            bool replace = false;
            var  tmp     = ActiveBets.SingleOrDefault(b => b.UserId == bet.UserId);

            if (tmp != null)
            {
                if (GType == GameType.SaltyBet)
                {
                    return("Can only bet once per game in this format.");
                }
                else if (bet.BettedAmount < tmp.BettedAmount)
                {
                    return("Not allowed to replace an existing bet with less than previous bet.");
                }

                ActiveBets.Remove(tmp);
                replace = true;
            }

            ActiveBets.Add(bet);
            if (replace)
            {
                return($"Replaced **{bet.UserName}**'s bet with {symbol}{bet.BettedAmount} to {bet.Tribute}.");
            }
            else
            {
                return($"Added **{bet.UserName}**'s bet of {symbol}{bet.BettedAmount} to {bet.Tribute}.");
            }
        }
Esempio n. 2
0
        public string Winner(string winner)
        {
            GameOpen = false;
            var winners = ActiveBets.Where(b => b.Tribute.Equals(winner, StringComparison.InvariantCultureIgnoreCase))
                          .Select(b => _channel.Server.GetUser(b.UserId));

            if (winners.Count() > 0)
            {
                var payout   = ActiveBets.Sum(b => b.BettedAmount) / winners.Count();
                var rounding = ActiveBets.Sum(b => b.BettedAmount) % winners.Count();

                foreach (var user in winners)
                {
                    _bank.Accounts.SingleOrDefault(u => u.UserId == user.Id).Bucks += payout;
                }
                _bank.WriteBank();

                if (winners.Count() == 1)
                {
                    return($"{winners.Single().Name} has won the whole pot of {symbol}{payout}.");
                }
                else
                {
                    return($"{String.Join(", ", winners.Select(u => u.Name))} have won {symbol}{payout} each. {symbol}{rounding} has been lost due to rounding.");
                }
            }
            else
            {
                return($"No bets were made on the winner of this game.");
            }
        }
Esempio n. 3
0
 public void ClosingGame()
 {
     _countDown = new Timer(async cb =>
     {
         CloseOff();
         await _channel.SendMessage($"Bets are closed. {ActiveBets.Count} bets are in. The pot is {symbol}{ActiveBets.Sum(b => b.BettedAmount)}.");
     },
                            null,
                            TimeSpan.FromSeconds((GType == GameType.SaltyBet ? 30 : 45)),
                            Timeout.InfiniteTimeSpan);
 }