Esempio n. 1
0
        public void SetAmount(UserDataModel user, int amount)
        {
            RankModel prevRank = this.GetRank(user);

            user.CurrencyAmounts[this.ID] = Math.Min(Math.Max(amount, 0), this.MaxAmount);
            if (ChannelSession.Settings != null)
            {
                ChannelSession.Settings.UserData.ManualValueChanged(user.ID);
            }

            RankModel newRank = this.GetRank(user);

            UserViewModel userViewModel = ChannelSession.Services.User.GetUserByID(user.ID);

            if (userViewModel == null)
            {
                userViewModel = new UserViewModel(user);
            }

            if (newRank.Amount > prevRank.Amount && this.RankChangedCommand != null)
            {
                AsyncRunner.RunAsyncBackground((cancellationToken) => this.RankChangedCommand.Perform(new CommandParametersModel(userViewModel)), new CancellationToken());
            }
            else if (newRank.Amount < prevRank.Amount && this.RankDownCommand != null)
            {
                AsyncRunner.RunAsyncBackground((cancellationToken) => this.RankDownCommand.Perform(new CommandParametersModel(userViewModel)), new CancellationToken());
            }
        }
Esempio n. 2
0
 public RankModel GetNextRank(UserDataModel user)
 {
     if (this.Ranks.Count > 0)
     {
         int       amount = this.GetAmount(user);
         RankModel rank   = this.Ranks.Where(r => r.Amount > amount).Min();
         if (rank != null)
         {
             return(rank);
         }
     }
     return(CurrencyModel.NoRank);
 }
        public void AddAmount(UserDataModel user, int amount)
        {
            if (!user.IsCurrencyRankExempt && amount > 0)
            {
                RankModel prevRank = this.GetRank(user);

                this.SetAmount(user, this.GetAmount(user) + amount);

                RankModel newRank = this.GetRank(user);

                if (prevRank != newRank && this.RankChangedCommand != null)
                {
                    this.RankChangedCommand.Perform(ChannelSession.Services.User.GetUserByID(user.ID)).Wait();
                }
            }
        }