text: #pragma once
  
  #include <QVector>
  
  #include "EnchantName.h"
  #include "ItemNamespace.h"
  
  class Character;
  
  class CharacterEnchants {
  public:
      CharacterEnchants(Character* pchar);
      virtual ~CharacterEnchants() = default;
  
      virtual QVector<EnchantName::Name> get_available_enchants(const int equipment_slot) const = 0;
      virtual QVector<EnchantName::Name> get_available_temp_enchants(const int equipment_slot) const = 0;
  
      bool enchant_valid(EnchantName::Name enchant_name, const int weapon_slot) const;
      bool temp_enchant_valid(EnchantName::Name enchant_name, const int weapon_slot, const int equipment_slot) const;
  
  protected:
      Character* pchar;
  
      bool has_sharp_weapon(const int equipment_slot) const;
      bool has_blunt_weapon(const int equipment_slot) const;
      bool has_2hand() const;
  };
  