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

PirateBehaviourEnum   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 49
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 0
Metric Value
eloc 29
c 0
b 0
f 0
dl 0
loc 49
ccs 0
cts 22
cp 0
rs 10
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A getProbability() 0 14 1
A getBehaviourProbabilities() 0 3 1
A needsWeapons() 0 6 1
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