PkmnLib/tests/TestLibrary/TestLibrary.hpp

67 lines
2.8 KiB
C++
Raw Normal View History

2019-12-29 14:29:52 +00:00
#ifndef PKMNLIB_TESTLIBRARY_HPP
#define PKMNLIB_TESTLIBRARY_HPP
#include <Library/GrowthRates/LookupGrowthRate.hpp>
#include "../../src/Battling/Library/BattleLibrary.hpp"
#include "../../src/Library/Moves/MoveLibrary.hpp"
2019-12-29 14:29:52 +00:00
#include "../../src/Library/PokemonLibrary.hpp"
2020-01-02 19:26:01 +00:00
#include "../../src/Library/Statistic.hpp"
2019-12-29 14:29:52 +00:00
class TestLibrary {
private:
static PkmnLib::Battling::BattleLibrary* _library;
2019-12-29 14:29:52 +00:00
public:
static PkmnLib::Battling::BattleLibrary* GetLibrary() {
2019-12-29 14:29:52 +00:00
if (_library == nullptr) {
_library = BuildLibrary();
}
return _library;
}
static PkmnLib::Battling::BattleLibrary* BuildLibrary() {
2020-01-05 14:18:30 +00:00
auto statCalc = new PkmnLib::Battling::StatCalculator();
auto scriptResolver = PkmnLib::Battling::BattleLibrary::CreateScriptResolver();
auto lib = new PkmnLib::Battling::BattleLibrary(
BuildStaticLibrary(), statCalc, new PkmnLib::Battling::DamageLibrary(),
new CreatureLib::Battling::ExperienceLibrary(), scriptResolver,
new CreatureLib::Battling::MiscLibrary());
scriptResolver->Initialize(lib);
return lib;
}
static PkmnLib::Library::PokemonLibrary* BuildStaticLibrary() {
return new PkmnLib::Library::PokemonLibrary(new PkmnLib::Library::LibrarySettings(100, 4, 4096),
BuildSpeciesLibrary(), BuildMoveLibrary(), BuildItemLibrary(),
BuildGrowthRateLibrary(), BuildTypeLibrary(), BuildNatureLibrary());
2019-12-29 14:29:52 +00:00
}
2020-01-05 14:18:30 +00:00
static PkmnLib::Library::SpeciesLibrary* BuildSpeciesLibrary();
2019-12-29 14:29:52 +00:00
static PkmnLib::Library::MoveLibrary* BuildMoveLibrary();
2019-12-29 14:29:52 +00:00
static PkmnLib::Library::ItemLibrary* BuildItemLibrary();
2019-12-29 14:29:52 +00:00
static CreatureLib::Library::GrowthRateLibrary* BuildGrowthRateLibrary() {
auto lib = new CreatureLib::Library::GrowthRateLibrary();
lib->AddGrowthRate("testGrowthRate", new CreatureLib::Library::LookupGrowthRate());
2019-12-29 14:29:52 +00:00
return lib;
}
static CreatureLib::Library::TypeLibrary* BuildTypeLibrary() {
auto lib = new CreatureLib::Library::TypeLibrary();
return lib;
}
static PkmnLib::Library::NatureLibrary* BuildNatureLibrary() {
auto lib = new PkmnLib::Library::NatureLibrary();
2020-01-02 19:26:01 +00:00
lib->LoadNature("neutralNature", PkmnLib::Library::Nature(PkmnLib::Library::Statistic::PhysicalAttack,
PkmnLib::Library::Statistic::PhysicalDefense, 1, 1));
2020-01-05 14:18:30 +00:00
lib->LoadNature("buffsAttackNerfsSpeed", PkmnLib::Library::Nature(PkmnLib::Library::Statistic::PhysicalAttack,
PkmnLib::Library::Statistic::Speed, 1.1, 0.9));
return lib;
}
2019-12-29 14:29:52 +00:00
};
#endif // PKMNLIB_TESTLIBRARY_HPP