public virtual void UpdateItems(GameTime gameTime)
 {
     for (int i = Inventory.Count - 1; i >= 0; i--)
     {
         Item Item = Inventory[i];
         if (Item is IUsableUpdatableItem UsableUpdatableItem)
         {
             if (UsableUpdatableItem.IsCurrentlyInUse)
             {
                 UsableUpdatableItem.Update(gameTime, this);
             }
             else if (UsableUpdatableItem.HasRecentUsageJustFinished)
             {
                 UsableUpdatableItem.RemainingUsages--;
                 UsableUpdatableItem.HasRecentUsageJustFinished = false;
                 ItemsCurrentlyInUse.Remove(UsableUpdatableItem);
                 if (UsableUpdatableItem.RemainingUsages == 0)
                 {
                     DeleteItem((Item)UsableUpdatableItem);
                 }
             }
             continue;
         }
         if (Item is IUpdatableItem UpdatableItem)
         {
             UpdatableItem.Update(gameTime, this);
         }
     }
 }
 public virtual bool UseItem(int i)
 {
     if (Inventory[i] is IUsableUpdatableItem UsableUpdatableItem)
     {
         if (IsItemEligibleToBeUsed(UsableUpdatableItem))
         {
             UsableUpdatableItem.Use(this);
             ItemsCurrentlyInUse.Add(UsableUpdatableItem);
             return(true);
         }
         else
         {
             return(false);
         }
     }
     else if (Inventory[i] is IUsableItem UsableItem)
     {
         if (UsableItem.RemainingUsages > 0)
         {
             UsableItem.Use(this);
             UsableItem.RemainingUsages--;
         }
         if (UsableItem.RemainingUsages == 0)
         {
             DeleteItem(i);
         }
         return(true);
     }
     else
     {
         return(false); //Item is unusable
     }
 }