diff --git a/src/Battling/ScriptHandling/ScriptAggregator.hpp b/src/Battling/ScriptHandling/ScriptAggregator.hpp index 7910b41..da329ac 100644 --- a/src/Battling/ScriptHandling/ScriptAggregator.hpp +++ b/src/Battling/ScriptHandling/ScriptAggregator.hpp @@ -14,6 +14,25 @@ namespace CreatureLib::Battling { size_t _index = 0; size_t _setIndex = 0; + inline void IncrementToNextNotNull(bool initialIncrement = true) { + if (_scripts[_index].IsSet()) { + _setIndex++; + if (_setIndex >= _scripts[_index].GetScriptSet()->Count()) { + _setIndex = 0; + } else { + return; + } + } + if (initialIncrement) + _index++; + while (HasNext()) { + if (_scripts[_index].HasValue()) { + return; + } + _index++; + } + } + public: ScriptAggregator(){}; explicit ScriptAggregator(const ArbUt::List& scripts) @@ -21,11 +40,12 @@ namespace CreatureLib::Battling { inline void Reset() { _index = 0; - _setIndex = 0; + _setIndex = -1; + IncrementToNextNotNull(false); } inline bool HasNext() { return _index < _size; } - Script* GetNextNotNull() { + ArbUt::BorrowedPtr