#ifndef CREATURELIB_SCRIPTSET_HPP #define CREATURELIB_SCRIPTSET_HPP #include #include #include "Script.hpp" namespace CreatureLib::Battling { class ScriptSet { std::vector _scripts; std::unordered_map _lookup; public: void Add(Script* script) { auto f = _lookup.find(script->GetName()); if (f != _lookup.end()) { _scripts[f.operator*().second]->Stack(); return; } _scripts.push_back(script); _lookup.insert({script->GetName(), _scripts.size() - 1}); } void Remove(const std::string& key) { auto find = _lookup.find(key); if (find != _lookup.end()) { _scripts.erase(_scripts.begin() + find.operator*().second); _lookup.erase(key); } } size_t Count() const { return _scripts.size(); } const std::vector* GetIterator() const { return &_scripts; } }; } #endif // CREATURELIB_SCRIPTSET_HPP