Passed
Push — dev ( e70415...d9e229 )
by Janko
25:36
created

PirateBehaviourEnum::needsWeapons()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 6
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
cc 1
eloc 4
c 0
b 0
f 0
nc 1
nop 0
dl 0
loc 6
ccs 0
cts 5
cp 0
crap 2
rs 10
1
<?php
2
3
namespace Stu\Lib\Pirate;
4
5
enum PirateBehaviourEnum: int
6
{
7
    // passive
8
    case DO_NOTHING = 0;
9
    case FLY = 1;
10
    case HIDE = 2;
11
    case SEARCH_FRIEND = 3;
12
13
        // aggressive
14
    case RUB_COLONY = 4;
15
    case ATTACK_SHIP = 5;
16
    case RAGE = 6;
17
    case CALL_FOR_SUPPORT = 7;
18
    case ASSAULT_PHALANX = 8;
19
20
        // auxiliary
21
    case GO_ALERT_RED = 9;
22
    case DEACTIVATE_SHIELDS = 10;
23
24
    public function getProbability(): int
25
    {
26
        return match ($this) {
27
            self::FLY => 40,
28
            self::DO_NOTHING => 30,
29
            self::HIDE => 20,
30
            self::RUB_COLONY => 5,
31
            self::ATTACK_SHIP => 5,
32
            self::RAGE => 2,
33
            self::CALL_FOR_SUPPORT => 1,
34
            self::ASSAULT_PHALANX => 1,
35
            self::GO_ALERT_RED => 0,
36
            self::SEARCH_FRIEND => 0,
37
            self::DEACTIVATE_SHIELDS => 0
38
        };
39
    }
40
41
    public function needsWeapons(): bool
42
    {
43
        return match ($this) {
44
            self::ATTACK_SHIP,
45
            self::RAGE => true,
46
            default => false
47
        };
48
    }
49
50
    /** @return array<int, int> */
51
    public static function getBehaviourProbabilities(): array
52
    {
53
        return array_map(fn(PirateBehaviourEnum $behaviour): int => $behaviour->getProbability(), self::cases());
54
    }
55
}
56