#pragma once #include #include "dCommonVars.h" #include "ItemSetPassiveAbility.h" class InventoryComponent; /** * A set of items that can be worn together for special bonuses, for example faction gear. */ class ItemSet { public: explicit ItemSet(uint32_t id, InventoryComponent* inventoryComponent); void Update(float deltaTime); /** * Returns if this item set contains the LOT specified * @param lot the lot to check for * @return if this item set contains the LOT specified */ bool Contains(LOT lot); /** * Equips the item set skill for this LOT (if it's in the item set) * @param lot the LOT of the item to equip skills for */ void OnEquip(LOT lot); /** * Unequips the item set skill for this LOT (if it's in the item set) * @param lot the LOT of the item to unequip skills for */ void OnUnEquip(LOT lot); /** * Returns the number of items in the item set that are currently equipped * @return the number of items in the item set that are currently equipped */ uint32_t GetEquippedCount() const; /** * Returns the ID of this item set * @return the ID of this item set */ uint32_t GetID() const; /** * Triggers all the passive abilities in this item set that match this trigger * @param trigger the trigger to use to trigger passive abilities */ void TriggerPassiveAbility(PassiveAbilityTrigger trigger, Entity* target = nullptr); /** * Returns the skills that can be equipped for a specified amount of equipped items * @param itemCount the amount of items equipped to check for * @return the skills that can be equipped for a specified amount of equipped items */ std::vector GetSkillSet(uint32_t itemCount) const; private: /** * The ID of this skill set */ uint32_t m_ID; /** * The inventory this skill set belongs to */ InventoryComponent* m_InventoryComponent; /** * The items in the skill set that are currently equipped */ std::vector m_Equipped; /** * The total list of items in this skill set */ std::vector m_Items; /** * The skills that can be triggered when 2 items are equipped */ std::vector m_SkillsWith2; /** * The skills that can be triggered when 3 items are equipped */ std::vector m_SkillsWith3; /** * The skills that can be triggered when 4 items are equipped */ std::vector m_SkillsWith4; /** * The skills that can be triggered when 5 items are equipped */ std::vector m_SkillsWith5; /** * The skills that can be triggered when 6 items are equipped */ std::vector m_SkillsWith6; /** * The passive abilities associated with this skill set */ std::vector m_PassiveAbilities; };