#ifdef TESTS_BUILD #include "TestLibrary.hpp" #include "../../src/Library/GrowthRates/LookupGrowthRate.hpp" 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.GetHash(), 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.GetHash(), new AttackData("standard"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, 0, new SecondaryEffect(), {})); l->Insert("highPriority"_cnc.GetHash(), new AttackData("highPriority"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, 1, new SecondaryEffect(), {})); l->Insert("higherPriority"_cnc.GetHash(), new AttackData("higherPriority"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, 2, new SecondaryEffect(), {})); l->Insert("lowPriority"_cnc.GetHash(), new AttackData("lowPriority"_cnc, 0, AttackCategory::Physical, 20, 100, 30, AttackTarget::AdjacentOpponent, -1, new SecondaryEffect(), {})); return l; } ItemLibrary* TestLibrary::BuildItemLibrary() { auto l = new ItemLibrary(); return l; } GrowthRateLibrary* TestLibrary::BuildGrowthRateLibrary() { auto l = new GrowthRateLibrary(); l->AddGrowthRate( "testGrowthRate"_cnc.GetHash(), new LookupGrowthRate( {0, 15, 52, 122, 237, 406, 637, 942, 1326, 1800, 2369, 3041, 3822, 4719, 5737, 6881, 8155, 9564, 11111, 12800, 14632, 16610, 18737, 21012, 23437, 26012, 28737, 31610, 34632, 37800, 41111, 44564, 48155, 51881, 55737, 59719, 63822, 68041, 72369, 76800, 81326, 85942, 90637, 95406, 100237, 105122, 110052, 115015, 120001, 125000, 131324, 137795, 144410, 151165, 158056, 165079, 172229, 179503, 186894, 194400, 202013, 209728, 217540, 225443, 233431, 241496, 249633, 257834, 267406, 276458, 286328, 296358, 305767, 316074, 326531, 336255, 346965, 357812, 367807, 378880, 390077, 400293, 411686, 423190, 433572, 445239, 457001, 467489, 479378, 491346, 501878, 513934, 526049, 536557, 548720, 560922, 571333, 583539, 591882, 600000})); return l; } TypeLibrary* TestLibrary::BuildTypeLibrary() { auto l = new TypeLibrary(); l->RegisterType("testType1"_cnc); l->RegisterType("testType2"_cnc); l->RegisterType("testType3"_cnc); return l; } #endif