Adds a bunch of helpers for evolution, as well as custom script evolution methods.
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:
13
src/Battling/EvolutionScript.hpp
Normal file
13
src/Battling/EvolutionScript.hpp
Normal file
@@ -0,0 +1,13 @@
|
||||
#ifndef PKMNLIB_EVOLUTIONSCRIPT_HPP
|
||||
#define PKMNLIB_EVOLUTIONSCRIPT_HPP
|
||||
|
||||
namespace PkmnLib::Battling {
|
||||
class EvolutionScript {
|
||||
public:
|
||||
virtual void DoesEvolveFromLevelUp(const ArbUt::BorrowedPtr<const PkmnLib::Library::EvolutionData>& evolution,
|
||||
const ArbUt::BorrowedPtr<const PkmnLib::Battling::Pokemon>& pokemon,
|
||||
bool* out) const = 0;
|
||||
};
|
||||
}
|
||||
|
||||
#endif // PKMNLIB_EVOLUTIONSCRIPT_HPP
|
||||
@@ -66,7 +66,16 @@ bool PkmnLib::Battling::MiscLibrary::CanEvolveFromLevelUp(
|
||||
return pokemon->GetLevel() >= evolution->GetData(1)->AsInt() &&
|
||||
pokemon->GetGender() == (CreatureLib::Library::Gender)evolution->GetData(0)->AsInt();
|
||||
case Library::EvolutionMethod::Custom:
|
||||
// TODO
|
||||
{
|
||||
auto script = dynamic_cast<ScriptResolver*>(pokemon->GetLibrary()->GetScriptResolver().get())
|
||||
->LoadEvolutionScript(evolution->GetData(0)->AsString());
|
||||
if (!script.HasValue()) {
|
||||
return false;
|
||||
}
|
||||
auto v = false;
|
||||
script.GetValue()->DoesEvolveFromLevelUp(evolution, pokemon, &v);
|
||||
return v;
|
||||
}
|
||||
case Library::EvolutionMethod::EvolutionItemUse:
|
||||
case Library::EvolutionMethod::EvolutionItemUseWithGender:
|
||||
case Library::EvolutionMethod::Trade:
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
#ifndef PKMNLIB_SCRIPTRESOLVER_HPP
|
||||
#define PKMNLIB_SCRIPTRESOLVER_HPP
|
||||
|
||||
#include "../EvolutionScript.hpp"
|
||||
|
||||
namespace PkmnLib::Battling {
|
||||
class ScriptResolver : public CreatureLib::Battling::ScriptResolver {
|
||||
public:
|
||||
virtual ArbUt::OptionalBorrowedPtr<const EvolutionScript> LoadEvolutionScript(const ArbUt::StringView&) {
|
||||
return nullptr;
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user