/** * @param MovementTypesTable $movementTypesTable * @param string $movementTypeCode * @param SpeedTable $speedTable * @param string $terrainCode * @param TerrainDifficultyPercents $terrainDifficultyPercents * @param ImpassibilityOfTerrainTable $impassibilityOfTerrainTable * @return SpeedBonus * @throws \DrdPlus\Tables\Body\MovementTypes\Exceptions\UnknownMovementType * @throws \DrdPlus\Tables\Environments\Exceptions\UnknownTerrainCode * @throws \DrdPlus\Tables\Environments\Exceptions\InvalidTerrainCodeFormat */ public function getCurrentSpeedBonus(MovementTypesTable $movementTypesTable, $movementTypeCode, SpeedTable $speedTable, $terrainCode, TerrainDifficultyPercents $terrainDifficultyPercents, ImpassibilityOfTerrainTable $impassibilityOfTerrainTable) { $movementTypeBonus = $movementTypesTable->getSpeedBonus($movementTypeCode); $terrainMalus = $impassibilityOfTerrainTable->getSpeedMalusOnTerrain($terrainCode, $speedTable, $terrainDifficultyPercents); /** @noinspection ExceptionsAnnotatingAndHandlingInspection */ return new SpeedBonus($this->getValue() + $movementTypeBonus->getValue() + $terrainMalus->getValue(), $speedTable); }
/** * @test * @expectedException \DrdPlus\Tables\Body\MovementTypes\Exceptions\UnknownMovementType * @expectedExceptionMessageRegExp ~moonwalk~ */ public function I_can_not_get_movement_bonus_for_unknown_type() { $movementTypesTable = new MovementTypesTable($this->speedTable, $this->timeTable); /** @noinspection ExceptionsAnnotatingAndHandlingInspection */ $movementTypesTable->getSpeedBonus('moonwalk'); }