CombatActionSelector::chooseAction()   A
last analyzed

Complexity

Conditions 4
Paths 4

Size

Total Lines 16
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 8
CRAP Score 4.128

Importance

Changes 5
Bugs 0 Features 0
Metric Value
eloc 9
c 5
b 0
f 0
dl 0
loc 16
rs 9.9666
ccs 8
cts 10
cp 0.8
cc 4
nc 4
nop 2
crap 4.128
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