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); } }
protected void PerformPrimarySetPayout(UserViewModel user, int payout) { CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement(); if (currencyRequirement != null) { currencyRequirement.AddSubtractAmount(user, payout); } }
protected void SetPrimaryCurrencyRequirementArgumentIndex(int argumentIndex) { CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement(); if (currencyRequirement != null) { currencyRequirement.ArgumentIndex = argumentIndex; } }
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); }
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); }
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)); } }
protected bool ValidatePrimaryCurrencyAmount(CommandParametersModel parameters, int amount) { CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement(); return((currencyRequirement != null) ? currencyRequirement.Currency.HasAmount(parameters.User.Data, amount) : false); }
protected int GetPrimaryBetAmount(CommandParametersModel parameters) { CurrencyRequirementModel currencyRequirement = this.GetPrimaryCurrencyRequirement(); return((currencyRequirement != null) ? currencyRequirement.GetAmount(parameters) : 0); }
public void Add(CurrencyRequirementModel requirement) { this.Items.Add(new CurrencyRequirementViewModel(this, requirement)); }
public CurrencyRequirementViewModel(CurrencyListRequirementViewModel viewModel, CurrencyRequirementModel requirement) : this(viewModel) { this.SelectedCurrency = requirement.Currency; this.SelectedRequirementType = requirement.RequirementType; this.MinAmount = requirement.MinAmount; this.MaxAmount = requirement.MaxAmount; }
public CurrencyRequirementViewModel(CurrencyListRequirementViewModel viewModel, CurrencyRequirementModel requirement) : this(viewModel) { this.SelectedCurrency = requirement.Currency; this.Amount = requirement.Amount; }