mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-24 14:37:25 +00:00
115 lines
2.7 KiB
C++
115 lines
2.7 KiB
C++
#pragma once
|
|
|
|
#include <vector>
|
|
|
|
#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<uint32_t> 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<LOT> m_Equipped;
|
|
|
|
/**
|
|
* The total list of items in this skill set
|
|
*/
|
|
std::vector<LOT> m_Items;
|
|
|
|
/**
|
|
* The skills that can be triggered when 2 items are equipped
|
|
*/
|
|
std::vector<uint32_t> m_SkillsWith2;
|
|
|
|
/**
|
|
* The skills that can be triggered when 3 items are equipped
|
|
*/
|
|
std::vector<uint32_t> m_SkillsWith3;
|
|
|
|
/**
|
|
* The skills that can be triggered when 4 items are equipped
|
|
*/
|
|
std::vector<uint32_t> m_SkillsWith4;
|
|
|
|
/**
|
|
* The skills that can be triggered when 5 items are equipped
|
|
*/
|
|
std::vector<uint32_t> m_SkillsWith5;
|
|
|
|
/**
|
|
* The skills that can be triggered when 6 items are equipped
|
|
*/
|
|
std::vector<uint32_t> m_SkillsWith6;
|
|
|
|
/**
|
|
* The passive abilities associated with this skill set
|
|
*/
|
|
std::vector<ItemSetPassiveAbility> m_PassiveAbilities;
|
|
};
|