/** * @test */ public function I_can_convert_max_level_to_experiences() { $experiencesTable = new ExperiencesTable($woundsTable = new WoundsTable()); $lastLevel = new Level($levelValue = 20, $experiencesTable); self::assertSame(180, $experiencesTable->toExperiences($lastLevel)->getValue()); self::assertSame(1447, $experiencesTable->toTotalExperiences($lastLevel)->getValue()); }
private function checkLevelsAgainstExperiences(ProfessionLevels $professionLevels, Memories $memories, ExperiencesTable $experiencesTable) { $highestLevelRank = $professionLevels->getCurrentLevel()->getLevelRank(); $requiredExperiences = $experiencesTable->toTotalExperiences(new LevelBonus($highestLevelRank->getValue(), $experiencesTable)); $availableExperiences = $memories->getExperiences($experiencesTable); if ($availableExperiences->getValue() < $requiredExperiences->getValue()) { throw new Exceptions\InsufficientExperiences("Given level {$highestLevelRank} needs at least {$requiredExperiences} experiences, got only {$availableExperiences}"); } }
/** * Summary of experiences, needed to achieve current level * * @return Experiences */ public function getTotalExperiences() { return $this->experiencesTable->toTotalExperiences($this); }