Rework script handling to use smart pointers properly
Some checks failed
continuous-integration/drone/push Build is failing

This commit is contained in:
2022-05-14 16:07:32 +02:00
parent 0117cb9d64
commit de6d39376f
17 changed files with 85 additions and 77 deletions

View File

@@ -32,10 +32,10 @@
scriptIterator->hookName(__VA_ARGS__); \
} \
} else { \
if (scriptWrapper.GetScript()->get()->IsSuppressed()) { \
if (scriptWrapper.GetScript()->GetValue()->IsSuppressed()) { \
continue; \
} \
scriptWrapper.GetScript()->get()->hookName(__VA_ARGS__); \
scriptWrapper.GetScript()->GetValue()->hookName(__VA_ARGS__); \
} \
} \
} catch (const ArbUt::Exception& e) { \

View File

@@ -9,22 +9,22 @@ namespace CreatureLib::Battling {
bool _isSet;
union {
std::unique_ptr<BattleScript> const* nullable _script;
ArbUt::OptionalUniquePtr<BattleScript> const* nullable _script;
const ScriptSet* nullable _scriptSet;
};
ScriptWrapper(std::unique_ptr<BattleScript>* nullable s, bool isSet) : _isSet(isSet), _script(s){};
ScriptWrapper(ArbUt::OptionalUniquePtr<BattleScript>* nullable s, bool isSet) : _isSet(isSet), _script(s){};
ScriptWrapper(ScriptSet* nullable s, bool isSet) : _isSet(isSet), _scriptSet(s){};
public:
static inline ScriptWrapper FromScript(std::unique_ptr<BattleScript>* nullable s) {
static inline ScriptWrapper FromScript(ArbUt::OptionalUniquePtr<BattleScript>* nullable s) {
return ScriptWrapper(s, false);
}
static inline ScriptWrapper FromSet(ScriptSet* nullable s) { return ScriptWrapper(s, true); }
inline bool IsSet() const noexcept { return _isSet; }
inline const std::unique_ptr<BattleScript>* nullable GetScript() const noexcept { return _script; }
inline const ArbUt::OptionalUniquePtr<BattleScript>* nullable GetScript() const noexcept { return _script; }
inline const ScriptSet* nullable GetScriptSet() const noexcept { return _scriptSet; }
inline bool HasValue() const noexcept {