Update to latest CreatureLib
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
This commit is contained in:
parent
50c58a9fd3
commit
cf34563a56
|
@ -15,7 +15,7 @@ export_func uint8_t PkmnLib_AngelScriptResolver_CreateScript(AngelScriptResolver
|
|||
export_func uint8_t PkmnLib_AngelScriptResolver_FinalizeModule(AngelScriptResolver* p) { Try(p->FinalizeModule();) }
|
||||
export_func uint8_t PkmnLib_AngelScriptResolver_LoadScript(CreatureLib::Battling::BattleScript*& out, AngelScriptResolver* p,
|
||||
void* owner, ScriptCategory category, const char* scriptName) {
|
||||
Try(out = p->LoadScript(owner, category, ArbUt::StringView(scriptName));)
|
||||
Try(out = p->LoadScript(owner, category, ArbUt::StringView(scriptName)).TakeOwnership();)
|
||||
}
|
||||
export_func uint8_t PkmnLib_AngelScriptResolver_LoadEvolutionScript(PkmnLib::Battling::EvolutionScript const*& out,
|
||||
AngelScriptResolver* p, const char* scriptName) {
|
||||
|
|
|
@ -6,18 +6,18 @@ bool PkmnLib::Battling::Battle::SetWeather(const ArbUt::StringView& name) {
|
|||
if (blockWeather) {
|
||||
return false;
|
||||
}
|
||||
if (_weatherScript != nullptr) {
|
||||
_weatherScript->OnRemove();
|
||||
if (_weatherScript.HasValue()) {
|
||||
_weatherScript.GetValue()->OnRemove();
|
||||
}
|
||||
_weatherScript = std::unique_ptr<CreatureLib::Battling::BattleScript>(
|
||||
_library->LoadScript(this, static_cast<ScriptCategory>(PkmnScriptCategory::Weather), name));
|
||||
_weatherScript =
|
||||
_library->LoadScript(this, static_cast<ScriptCategory>(PkmnScriptCategory::Weather), name).TakeOwnership();
|
||||
_eventHook.Trigger<WeatherChangeEvent>(name);
|
||||
return true;
|
||||
}
|
||||
void PkmnLib::Battling::Battle::ClearWeather() {
|
||||
if (_weatherScript == nullptr)
|
||||
if (!_weatherScript.HasValue())
|
||||
return;
|
||||
_weatherScript->OnRemove();
|
||||
_weatherScript.GetValue()->OnRemove();
|
||||
_weatherScript = nullptr;
|
||||
_eventHook.Trigger<WeatherChangeEvent>(""_cnc);
|
||||
}
|
||||
|
@ -65,8 +65,8 @@ PkmnLib::Battling::Battle* PkmnLib::Battling::Battle::Clone() const {
|
|||
battle->_battleResult = _battleResult;
|
||||
battle->_currentTurn = _currentTurn;
|
||||
_volatile.Clone(battle, battle->_volatile);
|
||||
if (_weatherScript != nullptr) {
|
||||
battle->_weatherScript = std::unique_ptr<CreatureLib::Battling::BattleScript>(_weatherScript->Clone(battle));
|
||||
if (_weatherScript.HasValue()) {
|
||||
battle->_weatherScript = _weatherScript.GetValue()->Clone(battle);
|
||||
}
|
||||
|
||||
return battle;
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
namespace PkmnLib::Battling {
|
||||
class Battle : public CreatureLib::Battling::Battle {
|
||||
private:
|
||||
std::unique_ptr<CreatureLib::Battling::BattleScript> _weatherScript = nullptr;
|
||||
ArbUt::OptionalUniquePtr<CreatureLib::Battling::BattleScript> _weatherScript = nullptr;
|
||||
|
||||
public:
|
||||
Battle(const BattleLibrary* non_null library,
|
||||
|
@ -26,20 +26,21 @@ namespace PkmnLib::Battling {
|
|||
bool SetWeather(const ArbUt::StringView& name);
|
||||
void ClearWeather();
|
||||
void SuppressWeather() {
|
||||
if (_weatherScript != nullptr) {
|
||||
_weatherScript->Suppress();
|
||||
if (_weatherScript.HasValue()) {
|
||||
_weatherScript.GetValue()->Suppress();
|
||||
}
|
||||
}
|
||||
void UnsuppressWeather() {
|
||||
if (_weatherScript != nullptr) {
|
||||
_weatherScript->Unsuppress();
|
||||
if (_weatherScript.HasValue()) {
|
||||
_weatherScript.GetValue()->Unsuppress();
|
||||
}
|
||||
}
|
||||
|
||||
const ArbUt::StringView& GetWeatherName() noexcept {
|
||||
if (_weatherScript == nullptr)
|
||||
if (!_weatherScript.HasValue()) {
|
||||
return ArbUt::StringView::EmptyString();
|
||||
return _weatherScript->GetName();
|
||||
}
|
||||
return _weatherScript.GetValue()->GetName();
|
||||
}
|
||||
|
||||
size_t ScriptCount() const override { return CreatureLib::Battling::Battle::ScriptCount() + 1; }
|
||||
|
|
|
@ -11,8 +11,8 @@ namespace PkmnLib::Battling {
|
|||
auto rate = pokemon->GetSpecies()->GetCaptureRate();
|
||||
|
||||
u8 bonusBall = 1;
|
||||
auto* itemScript =
|
||||
dynamic_cast<PkmnItemUseScript*>(pokemon->GetLibrary()->GetScriptResolver()->LoadItemScript(catchItem));
|
||||
auto* itemScript = dynamic_cast<PkmnItemUseScript*>(
|
||||
pokemon->GetLibrary()->GetScriptResolver()->LoadItemScript(catchItem).GetValue());
|
||||
itemScript->ModifyPokeballCatchBonus(pokemon, &bonusBall);
|
||||
|
||||
u8 bonusStatus = 1;
|
||||
|
|
|
@ -53,13 +53,13 @@ CreatureLib::Battling::Creature* PkmnLib::Battling::Pokemon::Clone() const {
|
|||
c->_battleData.Side = _battleData.Side;
|
||||
c->_battleData.OnBattleField = _battleData.OnBattleField;
|
||||
c->_battleData.Index = _battleData.Index;
|
||||
if (_activeTalent != nullptr) {
|
||||
c->_activeTalent = std::unique_ptr<PkmnScript::BattleScript>(_activeTalent->Clone(c));
|
||||
if (_activeTalent.HasValue()) {
|
||||
c->_activeTalent = _activeTalent.GetValue()->Clone(c);
|
||||
}
|
||||
c->_hasOverridenTalent = _hasOverridenTalent;
|
||||
c->_overridenTalent = _overridenTalent;
|
||||
if (_status != nullptr) {
|
||||
c->_status = std::unique_ptr<PkmnScript::BattleScript>(_status->Clone(c));
|
||||
if (_status.HasValue()) {
|
||||
c->_status = _status.GetValue()->Clone(c);
|
||||
}
|
||||
_volatile.Clone(c, c->_volatile);
|
||||
c->_types = std::vector<u8>(_types);
|
||||
|
|
|
@ -165,8 +165,8 @@ void AngelScriptResolver::MessageCallback(const asSMessageInfo* msg, void*) {
|
|||
printf("%s (%d, %d) : %s : %s\n", msg->section, msg->row, msg->col, type, msg->message);
|
||||
}
|
||||
|
||||
CreatureLib::Battling::BattleScript* AngelScriptResolver::LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner,
|
||||
ScriptCategory category,
|
||||
ArbUt::OptionalUniquePtr<CreatureLib::Battling::BattleScript>
|
||||
AngelScriptResolver::LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner, ScriptCategory category,
|
||||
const ArbUt::StringView& scriptName) {
|
||||
ArbUt::Dictionary<ArbUt::StringView, AngelScriptTypeInfo*> innerDb;
|
||||
auto v = _typeDatabase.TryGet(category);
|
||||
|
@ -193,10 +193,11 @@ CreatureLib::Battling::BattleScript* AngelScriptResolver::LoadScript(const ArbUt
|
|||
return new AngelScriptScript(owner, ownerType, this, t.value(), obj, _contextPool);
|
||||
}
|
||||
|
||||
PkmnLib::Battling::PkmnItemUseScript* AngelScriptResolver::LoadItemScript(const CreatureLib::Library::Item* item) {
|
||||
ArbUt::OptionalUniquePtr<CreatureLib::Battling::ItemUseScript>
|
||||
AngelScriptResolver::LoadItemScript(const CreatureLib::Library::Item* item) {
|
||||
auto v = this->_itemUseScripts.TryGet(item);
|
||||
if (v.has_value()) {
|
||||
return v.value();
|
||||
return {v.value()};
|
||||
}
|
||||
if (!item->GetEffect().HasValue()) {
|
||||
return nullptr;
|
||||
|
|
|
@ -66,10 +66,11 @@ public:
|
|||
|
||||
void DefineWord(const std::string& word) { _builder.DefineWord(word.c_str()); }
|
||||
|
||||
CreatureLib::Battling::BattleScript* LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner,
|
||||
ScriptCategory category,
|
||||
ArbUt::OptionalUniquePtr<CreatureLib::Battling::BattleScript>
|
||||
LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner, ScriptCategory category,
|
||||
const ArbUt::StringView& scriptName) override;
|
||||
PkmnLib::Battling::PkmnItemUseScript* LoadItemScript(const CreatureLib::Library::Item* item) override;
|
||||
ArbUt::OptionalUniquePtr<CreatureLib::Battling::ItemUseScript>
|
||||
LoadItemScript(const CreatureLib::Library::Item* item) override;
|
||||
|
||||
ArbUt::OptionalBorrowedPtr<const PkmnLib::Battling::EvolutionScript>
|
||||
LoadEvolutionScript(const ArbUt::StringView& view) override;
|
||||
|
|
|
@ -11,7 +11,7 @@ class WebAssemblyFunctionCall {
|
|||
public:
|
||||
WebAssemblyFunctionCall(const ArbUt::BorrowedPtr<wasm_func_t>& func) : _func(func) {}
|
||||
|
||||
NO_COPY_OR_MOVE(WebAssemblyFunctionCall)
|
||||
NO_COPY_OR_MOVE(WebAssemblyFunctionCall);
|
||||
|
||||
void Call() {
|
||||
wasm_val_vec_t args = {argsCount, _arguments.Data};
|
||||
|
|
|
@ -132,7 +132,7 @@ void WebAssemblyScriptResolver::Finalize() {
|
|||
}
|
||||
}
|
||||
|
||||
CreatureLib::Battling::BattleScript*
|
||||
ArbUt::OptionalUniquePtr<CreatureLib::Battling::BattleScript>
|
||||
WebAssemblyScriptResolver::LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner, ScriptCategory category,
|
||||
const ArbUt::StringView& scriptName) {
|
||||
auto loadScriptOpt = GetFunction<2, 1>("load_script"_cnc);
|
||||
|
|
|
@ -44,7 +44,7 @@ public:
|
|||
|
||||
[[nodiscard]] inline wasm_memory_t* GetMemory() const noexcept { return _memory; }
|
||||
|
||||
CreatureLib::Battling::BattleScript* LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner,
|
||||
ArbUt::OptionalUniquePtr<CreatureLib::Battling::BattleScript> LoadScript(const ArbUt::OptionalBorrowedPtr<void>& owner,
|
||||
ScriptCategory category,
|
||||
const ArbUt::StringView& scriptName) nullable override;
|
||||
|
||||
|
|
|
@ -112,7 +112,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static AngelScriptScript* GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& scriptName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, scriptName);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, scriptName).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static AngelScriptItemUseScript* GetScript(PkmnLib::Battling::BattleLibrary* mai
|
|||
new CreatureLib::Library::SecondaryEffect(100, name, {}), nullptr, {});
|
||||
|
||||
auto s = lib->LoadItemScript(&item);
|
||||
auto script = dynamic_cast<AngelScriptItemUseScript*>(s);
|
||||
auto script = dynamic_cast<AngelScriptItemUseScript*>(s.TakeOwnership());
|
||||
REQUIRE(script != nullptr);
|
||||
return script;
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
static AngelScriptScript* GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& scriptName,
|
||||
PkmnLib::Battling::Pokemon* owner) {
|
||||
auto* lib = GetScriptResolver(mainLib);
|
||||
auto* s = lib->LoadScript(owner, ScriptCategory::Creature, scriptName);
|
||||
auto* s = lib->LoadScript(owner, ScriptCategory::Creature, scriptName).TakeOwnership();
|
||||
auto* script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#if TESTS_BUILD && ANGELSCRIPT
|
||||
#include <doctest.h>
|
||||
#include "../../TestLibrary/TestLibrary.hpp"
|
||||
#include "../../src/ScriptResolving/AngelScript/AngelScriptResolver.hpp"
|
||||
#include "../../src/ScriptResolving/AngelScript/ContextPool.hpp"
|
||||
#include "../../TestLibrary/TestLibrary.hpp"
|
||||
|
||||
static std::unordered_map<const char*, const char*> _scripts =
|
||||
std::unordered_map<const char*, const char*>{{"testScript1", R"(
|
||||
|
@ -44,8 +44,7 @@ TEST_CASE("Build script resolver, then create object") {
|
|||
lib->CreateScript("testScript1", _scripts["testScript1"]);
|
||||
lib->FinalizeModule();
|
||||
|
||||
auto obj = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
|
||||
auto obj = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
delete obj;
|
||||
delete lib;
|
||||
}
|
||||
|
@ -56,7 +55,8 @@ TEST_CASE("Build script resolver, create object, invoke addition method") {
|
|||
lib->CreateScript("testScript1", _scripts["testScript1"]);
|
||||
lib->FinalizeModule();
|
||||
|
||||
auto obj = dynamic_cast<AngelScriptScript*>(lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc));
|
||||
auto obj = dynamic_cast<AngelScriptScript*>(
|
||||
lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership());
|
||||
REQUIRE(obj != nullptr);
|
||||
auto ctxPool = obj->GetContextPool();
|
||||
auto ctx = ctxPool->RequestContext();
|
||||
|
@ -86,8 +86,8 @@ TEST_CASE("Get a script resolver, save the byte code to memory, create new scrip
|
|||
originLib->Initialize(TestLibrary::GetLibrary());
|
||||
originLib->CreateScript("testScript1", _scripts["testScript1"]);
|
||||
originLib->FinalizeModule();
|
||||
auto obj =
|
||||
dynamic_cast<AngelScriptScript*>(originLib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc));
|
||||
auto obj = dynamic_cast<AngelScriptScript*>(
|
||||
originLib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership());
|
||||
REQUIRE(obj != nullptr);
|
||||
REQUIRE(obj->GetType()->GetOnInitialize().Exists);
|
||||
delete obj;
|
||||
|
@ -97,7 +97,8 @@ TEST_CASE("Get a script resolver, save the byte code to memory, create new scrip
|
|||
auto newLib = dynamic_cast<AngelScriptResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
newLib->Initialize(TestLibrary::GetLibrary());
|
||||
newLib->LoadByteCodeFromMemory(byteCode, size);
|
||||
obj = dynamic_cast<AngelScriptScript*>(newLib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc));
|
||||
obj = dynamic_cast<AngelScriptScript*>(
|
||||
newLib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership());
|
||||
REQUIRE(obj != nullptr);
|
||||
REQUIRE(obj->GetType()->GetOnInitialize().Exists);
|
||||
delete obj;
|
||||
|
@ -115,8 +116,8 @@ TEST_CASE("Get a script resolver, save the byte code to file, create new script
|
|||
auto newLib = dynamic_cast<AngelScriptResolver*>(PkmnLib::Battling::BattleLibrary::CreateScriptResolver());
|
||||
newLib->Initialize(TestLibrary::GetLibrary());
|
||||
newLib->LoadByteCodeFromFile("foo.bin");
|
||||
auto obj =
|
||||
dynamic_cast<AngelScriptScript*>(newLib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc));
|
||||
auto obj = dynamic_cast<AngelScriptScript*>(
|
||||
newLib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership());
|
||||
REQUIRE(obj != nullptr);
|
||||
delete obj;
|
||||
delete originLib;
|
||||
|
|
|
@ -44,7 +44,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& funcName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -57,7 +57,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& funcName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& funcName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -41,7 +41,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& funcName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -45,7 +45,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& funcName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& funcName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -44,7 +44,7 @@ static AngelScriptResolver* GetScriptResolver(PkmnLib::Battling::BattleLibrary*
|
|||
|
||||
static ScriptData GetScript(PkmnLib::Battling::BattleLibrary* mainLib, const ArbUt::StringView& funcName) {
|
||||
auto lib = GetScriptResolver(mainLib);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc);
|
||||
auto s = lib->LoadScript(nullptr, ScriptCategory::Creature, "testScript1"_cnc).TakeOwnership();
|
||||
auto script = dynamic_cast<AngelScriptScript*>(s);
|
||||
REQUIRE(script != nullptr);
|
||||
|
||||
|
|
|
@ -56,7 +56,7 @@ TEST_CASE("Get a script resolver, load a real wasm script, load test script") {
|
|||
lib->Finalize();
|
||||
auto script = lib->LoadScript(nullptr, ScriptCategory::Attack, "test"_cnc);
|
||||
EnsureNotNull(script);
|
||||
script->OnInitialize(TestLibrary::GetLibrary(), {});
|
||||
script.GetValue()->OnInitialize(TestLibrary::GetLibrary(), {});
|
||||
delete script;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue