#ifdef TESTS_BUILD #include "TestLibrary.hpp" #include "../../src/Library/GrowthRates/LookupGrowthRate.hpp" using namespace CreatureLib::Core; using namespace CreatureLib::Library; using namespace CreatureLib::Battling; BattleLibrary* TestLibrary::_library = nullptr; BattleLibrary* TestLibrary::Get() { if (TestLibrary::_library == nullptr) { auto l = new DataLibrary(new LibrarySettings(100, 4), BuildSpeciesLibrary(), BuildAttackLibrary(), BuildItemLibrary(), BuildGrowthRateLibrary(), BuildTypeLibrary()); auto statCalc = new BattleStatCalculator(); auto battleLib = new BattleLibrary(l, statCalc, new DamageLibrary(), new ExperienceLibrary(), new ScriptResolver(), new MiscLibrary()); TestLibrary::_library = battleLib; } return TestLibrary::_library; } SpeciesLibrary* TestLibrary::BuildSpeciesLibrary() { auto l = new SpeciesLibrary(); l->Insert("testSpecies1"_cnc, new CreatureSpecies(0, "testSpecies1"_cnc, new SpeciesVariant("default"_cnc, 1, 1, 10, {0, 1}, StatisticSet(10, 10, 10, 10, 10, 10), {"testTalent"_cnc}, {"testSecretTalent"_cnc}, new LearnableAttacks(100)), 0.5f, "testGrowthRate"_cnc, 5)); return l; } AttackLibrary* TestLibrary::BuildAttackLibrary() { auto l = new AttackLibrary(); l->Insert("standard"_cnc, new AttackData("standard"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, 0, {})); l->Insert("highPriority"_cnc, new AttackData("highPriority"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, 1, {})); l->Insert("higherPriority"_cnc, new AttackData("higherPriority"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, 2, {})); l->Insert("lowPriority"_cnc, new AttackData("lowPriority"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, -1, {})); return l; } ItemLibrary* TestLibrary::BuildItemLibrary() { auto l = new ItemLibrary(); return l; } GrowthRateLibrary* TestLibrary::BuildGrowthRateLibrary() { auto l = new GrowthRateLibrary(); l->AddGrowthRate("testGrowthRate"_cnc, new LookupGrowthRate()); return l; } TypeLibrary* TestLibrary::BuildTypeLibrary() { auto l = new TypeLibrary(); l->RegisterType("testType1"_cnc); l->RegisterType("testType2"_cnc); l->RegisterType("testType3"_cnc); return l; } #endif