CreatureLib/src/Battling/ScriptHandling/ScriptMacros.hpp

19 lines
2.0 KiB
C++

#define HOOK(hookName, source, ...) \
{ \
try { \
auto aggregator = source->GetScriptIterator(); \
while (aggregator.HasNext()) { \
auto next = aggregator.GetNext(); \
try { \
next->hookName(__VA_ARGS__); \
} catch (const std::exception& e) { \
THROW("Exception running script hook '" #hookName "': " << e.what()) \
} \
} \
} catch (const ArbUt::Exception& e) { \
throw e; \
} catch (const std::exception& e) { \
THROW("Exception setting up script hook '" #hookName "': " << e.what()) \
} \
}