Completed
Push — master ( 79c16c...fd607f )
by Steve
01:44
created

NumericDiceFactory::buildDice()   A

Complexity

Conditions 4
Paths 3

Size

Total Lines 11
Code Lines 7

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
dl 0
loc 11
c 0
b 0
f 0
rs 9.2
cc 4
eloc 7
nc 3
nop 2
1
<?php
2
3
namespace MeadSteve\DiceApi\Dice\Factories;
4
5
use MeadSteve\DiceApi\BasicDice;
6
use MeadSteve\DiceApi\Dice;
7
use MeadSteve\DiceApi\Dice\UncreatableDiceException;
8
use MeadSteve\DiceApi\Dice\ZeropointDice;
9
10
class NumericDiceFactory implements DiceFactory
11
{
12
    public function handlesType(string $type) : bool
13
    {
14
        return is_numeric($type);
15
    }
16
17
    /**
18
     * @param string $type
19
     * @param int $number
20
     * @return Dice[]
21
     */
22
    public function buildDice(string $type, int $number) : array
23
    {
24
        $newDice = [];
25
        if ((strlen($type) > 4) || ($type > 9000)) {
26
            throw new UncreatableDiceException("Only dice with a power level less than 9000 can be created.");
27
        }
28
        for ($i = 0; $i < $number; $i++) {
29
            $newDice[] = $this->newDiceOfSize($type);
30
        }
31
        return $newDice;
32
    }
33
34
    /**
35
     * @param $size
36
     * @return Dice
37
     */
38
    private function newDiceOfSize($size)
39
    {
40
        if ($size == 0) {
41
            return new ZeropointDice();
42
        }
43
        return new BasicDice($size);
44
    }
45
}
46