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 } }