Make all individual scripts smart pointers.
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
@@ -1,7 +1,7 @@
|
||||
#ifndef CREATURELIB_SCRIPTWRAPPER_HPP
|
||||
#define CREATURELIB_SCRIPTWRAPPER_HPP
|
||||
|
||||
#include <variant>
|
||||
#include <memory>
|
||||
#include "Script.hpp"
|
||||
#include "ScriptSet.hpp"
|
||||
|
||||
@@ -10,20 +10,20 @@ namespace CreatureLib::Battling {
|
||||
bool _isSet;
|
||||
|
||||
union {
|
||||
Script* const* _script;
|
||||
std::unique_ptr<Script> const* _script;
|
||||
const ScriptSet* _scriptSet;
|
||||
};
|
||||
|
||||
ScriptWrapper(Script** s, bool isSet) : _isSet(isSet), _script(s){};
|
||||
ScriptWrapper(std::unique_ptr<Script>* s, bool isSet) : _isSet(isSet), _script(s){};
|
||||
ScriptWrapper(ScriptSet* s, bool isSet) : _isSet(isSet), _scriptSet(s){};
|
||||
|
||||
public:
|
||||
static inline ScriptWrapper FromScript(Script** s) { return ScriptWrapper(s, false); }
|
||||
static inline ScriptWrapper FromScript(std::unique_ptr<Script>* s) { return ScriptWrapper(s, false); }
|
||||
static inline ScriptWrapper FromSet(ScriptSet* s) { return ScriptWrapper(s, true); }
|
||||
|
||||
bool IsSet() const { return _isSet; }
|
||||
|
||||
inline Script* const* GetScript() const { return _script; }
|
||||
inline const std::unique_ptr<Script>* GetScript() const { return _script; }
|
||||
inline const ScriptSet* GetScriptSet() const { return _scriptSet; }
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user