CombatActionSelector   A
last analyzed

Complexity

Total Complexity 4

Size/Duplication

Total Lines 18
Duplicated Lines 0 %

Test Coverage

Coverage 81.82%

Importance

Changes 6
Bugs 0 Features 1
Metric Value
wmc 4
eloc 10
c 6
b 0
f 1
dl 0
loc 18
rs 10
ccs 9
cts 11
cp 0.8182

1 Method

Rating   Name   Duplication   Size   Complexity  
A chooseAction() 0 16 4
1
<?php
2
declare(strict_types=1);
3
4
namespace HeroesofAbenez\Combat;
5
6
/**
7
 * CombatActionSelector
8
 *
9
 * @author Jakub Konečný
10
 */
11 1
final class CombatActionSelector implements ICombatActionSelector
12
{
13
    public function chooseAction(CombatBase $combat, Character $character): ?ICombatAction
14
    {
15 1
        if (!$character->canAct()) {
16
            return null;
17
        }
18
        /** @var ICombatAction[] $actions */
19 1
        $actions = $combat->combatActions->toArray();
20 1
        usort($actions, function (ICombatAction $a, ICombatAction $b): int {
21 1
            return $a->getPriority() <=> $b->getPriority();
22 1
        });
23 1
        foreach ($actions as $action) {
24 1
            if ($action->shouldUse($combat, $character)) {
25 1
                return $action;
26
            }
27
        }
28
        return null;
29
    }
30
}
31