Some checks failed
continuous-integration/drone/push Build is failing
Signed-off-by: Deukhoofd <Deukhoofd@gmail.com>
39 lines
1.1 KiB
C++
39 lines
1.1 KiB
C++
|
|
|
|
#ifndef CREATURELIB_SCRIPTSOURCE_HPP
|
|
#define CREATURELIB_SCRIPTSOURCE_HPP
|
|
|
|
#include "ScriptAggregator.hpp"
|
|
|
|
namespace CreatureLib::Battling {
|
|
class ScriptSource {
|
|
bool _areScriptsInitialized = false;
|
|
ArbUt::List<ScriptWrapper> _scripts;
|
|
ScriptAggregator _scriptsIterator;
|
|
|
|
protected:
|
|
void ResetActiveScripts() {
|
|
_areScriptsInitialized = false;
|
|
_scripts.Clear();
|
|
}
|
|
|
|
public:
|
|
virtual size_t ScriptCount() const = 0;
|
|
const ScriptAggregator& GetScriptIterator() {
|
|
if (!_areScriptsInitialized) {
|
|
_scripts.Reserve(ScriptCount());
|
|
GetActiveScripts(_scripts);
|
|
_scriptsIterator = ScriptAggregator(_scripts);
|
|
_areScriptsInitialized = true;
|
|
}
|
|
_scriptsIterator.Reset();
|
|
return _scriptsIterator;
|
|
}
|
|
|
|
virtual void GetActiveScripts(ArbUt::List<ScriptWrapper>& scripts) = 0;
|
|
virtual void GetOwnScripts(ArbUt::List<ScriptWrapper>& scripts) = 0;
|
|
};
|
|
}
|
|
|
|
#endif // CREATURELIB_SCRIPTSOURCE_HPP
|