Files
CreatureLib/src/Battling/ScriptHandling/ScriptSource.hpp
Deukhoofd 5fd8abb3a8
Some checks failed
continuous-integration/drone/push Build is failing
Reworks ScriptSources so we can get individual scripts on a source. Fixed OnEndTurn making no sense.
Signed-off-by: Deukhoofd <Deukhoofd@gmail.com>
2021-10-29 19:31:08 +02:00

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