I am starting to think about the itemization sub-system I am creating for a game (using C# BTW) and the initial way I am think about approaching this seems like it is going to lead to a lot of classes. The way I am thinking about doing this was to start off with a bunch of different interfaces like:
- IItem
- IConsumableItem
- IIngredientItem
- IEquipableItem
- IWeaponItem
- IArmorItem
- IQuestItem
- IItemModifier
- etc…
But then when I got to thinking about the classes I would have to create, just for quest alone I could have:
- QuestItem
- ConsumableQuestItem
- EquipableQuestItem
- WeaponQuestItem
- ArmorQuestItem
- ModifierQuestItem
- etc...
The IIngredientItem version of the QuestItem is the only one that I would probably not have (but then again maybe I would). Now right now QuestItem is the only one that really could have all the interface attached to it, IWeaponItem would never also have IConsumableItem or IArmorItem would never also have IWeaponItem. Is this structure something that just seems completely off or is it more like there are other ways to do it but this way works just as well with it's own pros/cons.