/** * @test */ public function I_can_create_zero_level() { $zeroLevel = new Level(0, $this->getExperiencesTable()); self::assertSame(0, $zeroLevel->getValue()); }
/** * Casting level to experiences is mostly lossy conversion! * Gives all experiences needed to achieve all levels sequentially up to given. * @param Level $level * @return Experiences */ public function toTotalExperiences(Level $level) { $experiencesSum = 0; for ($levelValueToCast = $level->getValue(); $levelValueToCast > 0; $levelValueToCast--) { if ($levelValueToCast > 1) { // main profession has first level for free $currentLevel = new Level($levelValueToCast, $this); $experiencesSum += $currentLevel->getExperiences()->getValue(); } } return new Experiences($experiencesSum, $this); }