#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