36 lines
1.5 KiB
C++
36 lines
1.5 KiB
C++
#ifndef PKMNLIB_WEBASSEMBLYBATTLESCRIPT_H
|
|
#define PKMNLIB_WEBASSEMBLYBATTLESCRIPT_H
|
|
|
|
#include "../../Battling/PkmnScript.hpp"
|
|
#include "WebAssemblyScriptCapabilities.hpp"
|
|
|
|
class WebAssemblyScriptResolver;
|
|
class WebAssemblyBattleScript : public PkmnLib::Battling::PkmnScript {
|
|
public:
|
|
WebAssemblyBattleScript(const ArbUt::OptionalBorrowedPtr<void>& owner, i32 wasm_ptr,
|
|
const std::unordered_set<WebAssemblyScriptCapabilities>* capabilities,
|
|
WebAssemblyScriptResolver* resolver, const ArbUt::StringView& scriptName)
|
|
: PkmnScript(owner), _resolver(resolver), _wasmPtr(wasm_ptr), _capabilities(capabilities),
|
|
_scriptName(scriptName) {}
|
|
~WebAssemblyBattleScript();
|
|
|
|
BattleScript* Clone(const ArbUt::OptionalBorrowedPtr<void>& owner) non_null override;
|
|
const ArbUt::StringView& GetName() const noexcept override { return _scriptName; }
|
|
|
|
public:
|
|
void OnInitialize(const CreatureLib::Battling::BattleLibrary* library,
|
|
const ArbUt::List<CreatureLib::Library::EffectParameter*>& parameters) override;
|
|
|
|
private:
|
|
[[nodiscard]] inline bool HasCapability(WebAssemblyScriptCapabilities capability) const noexcept {
|
|
return _capabilities->contains(capability);
|
|
}
|
|
|
|
WebAssemblyScriptResolver* _resolver;
|
|
i32 _wasmPtr;
|
|
const std::unordered_set<WebAssemblyScriptCapabilities>* _capabilities;
|
|
ArbUt::StringView _scriptName;
|
|
};
|
|
|
|
#endif // PKMNLIB_WEBASSEMBLYBATTLESCRIPT_H
|