コード例 #1
0
        public override async Task CustomRun(CommandParametersModel parameters)
        {
            await this.RefundCooldown(parameters);

            int betAmount = this.GetPrimaryBetAmount(parameters);

            if (betAmount > this.lastBidAmount)
            {
                if (this.lastBidParameters != null)
                {
                    this.PerformPrimarySetPayout(this.lastBidParameters.User, this.lastBidAmount);
                }

                this.lastBidParameters = parameters;
                this.lastBidAmount     = this.GetPrimaryBetAmount(parameters);

                await this.RunSubCommand(this.NewTopBidderCommand, parameters);
            }
            else
            {
                CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();
                if (currencyRequirement != null)
                {
                    await ChannelSession.Services.Chat.SendMessage(string.Format(MixItUp.Base.Resources.GameCurrencyRequirementAmountGreaterThan, this.lastBidAmount, currencyRequirement.Currency.Name));
                }
                await this.Requirements.Refund(parameters);
            }
        }
コード例 #2
0
        protected void PerformPrimarySetPayout(UserViewModel user, int payout)
        {
            CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();

            if (currencyRequirement != null)
            {
                currencyRequirement.AddSubtractAmount(user, payout);
            }
        }
コード例 #3
0
        protected void SetPrimaryCurrencyRequirementArgumentIndex(int argumentIndex)
        {
            CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();

            if (currencyRequirement != null)
            {
                currencyRequirement.ArgumentIndex = argumentIndex;
            }
        }
コード例 #4
0
        protected int PerformPrimaryMultiplierPayout(CommandParametersModel parameters, double payoutPercentage)
        {
            int payout = 0;
            CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();

            if (currencyRequirement != null)
            {
                payout = (int)(currencyRequirement.GetAmount(parameters) * payoutPercentage);
                currencyRequirement.AddSubtractAmount(parameters.User, payout);
            }
            return(payout);
        }
コード例 #5
0
        protected async Task <bool> ValidateTargetUserPrimaryBetAmount(CommandParametersModel parameters)
        {
            CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();
            int betAmount = this.GetPrimaryBetAmount(parameters);

            if (currencyRequirement != null && betAmount > 0)
            {
                string currencyName = currencyRequirement.Currency?.Name;
                if (currencyRequirement.Currency.HasAmount(parameters.TargetUser.Data, betAmount))
                {
                    return(true);
                }

                await ChannelSession.Services.Chat.SendMessage(string.Format(MixItUp.Base.Resources.GameCommandTargetUserInvalidAmount, betAmount, currencyName));

                return(false);
            }
            return(true);
        }
コード例 #6
0
        protected UserViewModel GetRandomUser(CommandParametersModel parameters)
        {
            CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();
            int betAmount = this.GetPrimaryBetAmount(parameters);

            if (currencyRequirement != null && betAmount > 0)
            {
                string currencyName        = currencyRequirement.Currency?.Name;
                List <UserViewModel> users = new List <UserViewModel>(ChannelSession.Services.User.GetAllWorkableUsers(parameters.Platform).Shuffle());
                users.Remove(parameters.User);
                foreach (UserViewModel user in users)
                {
                    if (!user.Data.IsCurrencyRankExempt && currencyRequirement.Currency.HasAmount(user.Data, betAmount))
                    {
                        return(user);
                    }
                }
                return(null);
            }
            else
            {
                return(ChannelSession.Services.User.GetRandomUser(parameters, excludeCurrencyRankExempt: true));
            }
        }
コード例 #7
0
        protected bool ValidatePrimaryCurrencyAmount(CommandParametersModel parameters, int amount)
        {
            CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();

            return((currencyRequirement != null) ? currencyRequirement.Currency.HasAmount(parameters.User.Data, amount) : false);
        }
コード例 #8
0
        protected int GetPrimaryBetAmount(CommandParametersModel parameters)
        {
            CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement();

            return((currencyRequirement != null) ? currencyRequirement.GetAmount(parameters) : 0);
        }
コード例 #9
0
 public void Add(CurrencyRequirementModel requirement)
 {
     this.Items.Add(new CurrencyRequirementViewModel(this, requirement));
 }
コード例 #10
0
 public CurrencyRequirementViewModel(CurrencyListRequirementViewModel viewModel, CurrencyRequirementModel requirement)
     : this(viewModel)
 {
     this.SelectedCurrency        = requirement.Currency;
     this.SelectedRequirementType = requirement.RequirementType;
     this.MinAmount = requirement.MinAmount;
     this.MaxAmount = requirement.MaxAmount;
 }
コード例 #11
0
 public CurrencyRequirementViewModel(CurrencyListRequirementViewModel viewModel, CurrencyRequirementModel requirement)
     : this(viewModel)
 {
     this.SelectedCurrency = requirement.Currency;
     this.Amount           = requirement.Amount;
 }