/**
  * @return Level
  */
 public function getBonus()
 {
     return $this->experiencesTable->toLevel($this);
 }
示例#2
0
 /**
  * Summary of experiences, needed to achieve current level
  *
  * @return Experiences
  */
 public function getTotalExperiences()
 {
     return $this->experiencesTable->toTotalExperiences($this);
 }
示例#3
0
 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}");
     }
 }
 /**
  * @test
  */
 public function I_can_create_first_level_from_max_experiences_for_it_but_get_zero_back()
 {
     $experiencesTable = new ExperiencesTable(new WoundsTable());
     $experiencesForFirstLevel = new Experiences($experiencesValue = 21, $experiencesTable);
     $levelOfMainProfession = $experiencesTable->toTotalLevel($experiencesForFirstLevel);
     self::assertSame(1, $levelOfMainProfession->getValue());
     self::assertSame(0, $levelOfMainProfession->getExperiences()->getValue());
     self::assertSame(0, $levelOfMainProfession->getTotalExperiences()->getValue());
     $minimalExperiencesForSecondLevel = new Experiences($experiencesValue + 2, $experiencesTable);
     $shouldBeSecondLevel = $minimalExperiencesForSecondLevel->getLevel();
     self::assertSame(2, $shouldBeSecondLevel->getValue());
     self::assertSame($experiencesValue + 1, $shouldBeSecondLevel->getExperiences()->getValue());
     self::assertSame($experiencesValue + 1, $shouldBeSecondLevel->getTotalExperiences()->getValue());
 }