public void AddInventoryAmount(UserInventoryViewModel inventory, string item, int amount)
 {
     if (!this.IsCurrencyRankExempt)
     {
         this.SetInventoryAmount(inventory, item, this.GetInventoryAmount(inventory, item) + amount);
     }
 }
 public void SubtractInventoryAmount(UserInventoryViewModel inventory, string item, int amount)
 {
     if (!this.IsCurrencyRankExempt)
     {
         this.SetInventoryAmount(inventory, item, Math.Max(this.GetInventoryAmount(inventory, item) - amount, 0));
     }
 }
 public void SetInventoryAmount(UserInventoryViewModel inventory, string itemName, int amount)
 {
     if (inventory.Items.ContainsKey(itemName))
     {
         UserInventoryItemViewModel item          = inventory.Items[itemName];
         UserInventoryDataViewModel inventoryData = this.GetInventory(inventory);
         inventoryData.Amounts[itemName] = Math.Min(amount, item.HasMaxAmount ? item.MaxAmount : inventoryData.Inventory.DefaultMaxAmount);
     }
 }
        public UserDataViewModel(DbDataReader dataReader, IChannelSettings settings)
            : this(uint.Parse(dataReader["ID"].ToString()), dataReader["UserName"].ToString())
        {
            this.ViewingMinutes = int.Parse(dataReader["ViewingMinutes"].ToString());

            if (dataReader.ColumnExists("CurrencyAmounts"))
            {
                Dictionary <Guid, int> currencyAmounts = JsonConvert.DeserializeObject <Dictionary <Guid, int> >(dataReader["CurrencyAmounts"].ToString());
                if (currencyAmounts != null)
                {
                    foreach (var kvp in currencyAmounts)
                    {
                        if (settings.Currencies.ContainsKey(kvp.Key))
                        {
                            this.SetCurrencyAmount(settings.Currencies[kvp.Key], kvp.Value);
                        }
                    }
                }
            }

            if (dataReader.ColumnExists("InventoryAmounts"))
            {
                Dictionary <Guid, Dictionary <string, int> > inventoryAmounts = JsonConvert.DeserializeObject <Dictionary <Guid, Dictionary <string, int> > >(dataReader["InventoryAmounts"].ToString());
                if (inventoryAmounts != null)
                {
                    foreach (var kvp in inventoryAmounts)
                    {
                        if (settings.Inventories.ContainsKey(kvp.Key))
                        {
                            UserInventoryViewModel inventory = settings.Inventories[kvp.Key];
                            this.InventoryAmounts[inventory] = new UserInventoryDataViewModel(this, inventory, kvp.Value);
                        }
                    }
                }
            }

            if (dataReader.ColumnExists("CustomCommands") && !string.IsNullOrEmpty(dataReader["CustomCommands"].ToString()))
            {
                this.CustomCommands.AddRange(SerializerHelper.DeserializeFromString <List <ChatCommand> >(dataReader["CustomCommands"].ToString()));
            }

            if (dataReader.ColumnExists("Options") && !string.IsNullOrEmpty(dataReader["Options"].ToString()))
            {
                JObject optionsJObj = JObject.Parse(dataReader["Options"].ToString());
                if (optionsJObj.ContainsKey("EntranceCommand") && optionsJObj["EntranceCommand"] != null)
                {
                    this.EntranceCommand = SerializerHelper.DeserializeFromString <CustomCommand>(optionsJObj["EntranceCommand"].ToString());
                }
                this.IsSparkExempt        = this.GetOptionValue <bool>(optionsJObj, "IsSparkExempt");
                this.IsCurrencyRankExempt = this.GetOptionValue <bool>(optionsJObj, "IsCurrencyRankExempt");
                this.GameWispUserID       = this.GetOptionValue <uint>(optionsJObj, "GameWispUserID");
                this.PatreonUserID        = this.GetOptionValue <string>(optionsJObj, "PatreonUserID");
                this.ModerationStrikes    = this.GetOptionValue <uint>(optionsJObj, "ModerationStrikes");
                this.CustomTitle          = this.GetOptionValue <string>(optionsJObj, "CustomTitle");
            }
        }
        public int GetInventoryAmount(UserInventoryViewModel inventory, string item)
        {
            UserInventoryDataViewModel inventoryData = this.GetInventory(inventory);

            if (inventoryData.Amounts.ContainsKey(item))
            {
                return(inventoryData.Amounts[item]);
            }
            return(0);
        }
 public void ResetInventoryAmount(UserInventoryViewModel inventory)
 {
     this.InventoryAmounts[inventory] = new UserInventoryDataViewModel(this, inventory);
 }
 public bool HasInventoryAmount(UserInventoryViewModel inventory, string item, int amount)
 {
     return(this.IsCurrencyRankExempt || this.GetInventoryAmount(inventory, item) >= amount);
 }
 public UserInventoryDataViewModel GetInventory(UserInventoryViewModel inventory)
 {
     return(this.InventoryAmounts.GetValueIfExists(inventory, new UserInventoryDataViewModel(this, inventory)));
 }
 public UserInventoryDataViewModel(UserDataViewModel user, UserInventoryViewModel inventory, IDictionary <string, int> amounts)
 {
     this.User      = user;
     this.Inventory = inventory;
     this.Amounts   = new Dictionary <string, int>(amounts);
 }
 public UserInventoryDataViewModel(UserDataViewModel user, UserInventoryViewModel inventory) : this(user, inventory, new Dictionary <string, int>())
 {
 }