#ifndef SPELLSMANAGER_H #define SPELLSMANAGER_H #include #include #include #include #include "abstractfactory.h" #include "effects/effect.h" #include "spells/spell.h" class SpellManager : public QObject { Q_OBJECT public: std::shared_ptr createSpell(QString spell_name); std::shared_ptr createEffect(QString effect_name); static SpellManager& getInstance(){ static SpellManager instance; return instance; } private: SpellManager(); SpellManager(const SpellManager&) = delete; SpellManager &operator=(SpellManager&) = delete; ObjectFactory spells_factory_; ObjectFactory effects_factory_; std::vector available_spells_list_; std::vector> all_spells_list_; }; #endif // SPELLSMANAGER_H