InitiativeFormulaParser   A
last analyzed

Complexity

Total Complexity 2

Size/Duplication

Total Lines 19
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 4
Bugs 0 Features 0
Metric Value
wmc 2
eloc 14
c 4
b 0
f 0
dl 0
loc 19
rs 10
ccs 14
cts 14
cp 1

1 Method

Rating   Name   Duplication   Size   Complexity  
A calculateInitiative() 0 17 2
1
<?php
2
declare(strict_types=1);
3
4
namespace HeroesofAbenez\Combat;
5
6
/**
7
 * InitiativeFormulaParser
8
 *
9
 * @author Jakub Konečný
10
 */
11 1
final class InitiativeFormulaParser implements IInitiativeFormulaParser
12
{
13
    public function calculateInitiative(Character $character): int
14
    {
15 1
        $result = 0;
16 1
        $formula = $character->initiativeFormula;
17 1
        $stats = [
18 1
            "INT" => (string) $character->intelligence, "DEX" => (string) $character->dexterity,
19 1
            "STR" => (string) $character->strength, "CON" => (string) $character->constitution,
20 1
            "CHAR" => (string) $character->charisma,
21
        ];
22 1
        $formula = str_replace(array_keys($stats), array_values($stats), $formula);
23 1
        preg_match("/^([1-9]+)d([1-9]+)/", $formula, $dices);
24 1
        for ($i = 1; $i <= (int) $dices[1]; $i++) {
25 1
            $result += rand(1, (int) $dices[2]);
26
        }
27 1
        preg_match("/\+([0-9]+)\/([0-9]+)/", $formula, $ammendum);
28 1
        $result += (int) $ammendum[1] / (int) $ammendum[2];
29 1
        return (int) $result;
30
    }
31
}
32