Passed
Push — master ( bf860f...1dd8f7 )
by Nico
57:55 queued 29:36
created

ShipDestructionCauseEnum   A

Complexity

Total Complexity 2

Size/Duplication

Total Lines 59
Duplicated Lines 0 %

Test Coverage

Coverage 0%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 45
dl 0
loc 59
ccs 0
cts 44
cp 0
rs 10
c 1
b 0
f 0
wmc 2

1 Method

Rating   Name   Duplication   Size   Complexity  
A getHistoryEntryText() 0 49 2
1
<?php
2
3
namespace Stu\Module\Ship\Lib\Destruction;
4
5
use Stu\Orm\Entity\ShipInterface;
6
7
enum ShipDestructionCauseEnum
8
{
9
    case FIELD_DAMAGE;
10
    case SHIP_FIGHT;
11
    case ALERT_RED;
12
    case ESCAPE_TRACTOR;
13
    case SELF_DESTRUCTION;
14
    case THOLIAN_WEB_IMPLOSION;
15
    case ORPHANIZED_TRADEPOST;
16
17
    public function getHistoryEntryText(
18
        ?ShipDestroyerInterface $destroyer,
19
        ShipInterface $destroyedShip
20
    ): string {
21
22
        $destroyerName = $destroyer === null ? '' : $destroyer->getName();
23
        $shipName = $destroyedShip->getName();
24
        $rumpName = $destroyedShip->getRump()->getName();
25
        $sector = $destroyedShip->getSectorString();
26
27
        return match ($this) {
28
            self::FIELD_DAMAGE => sprintf(
29
                'Die %s (%s) wurde beim Einflug in Sektor %s zerstört',
30
                $shipName,
31
                $rumpName,
32
                $sector
33
            ),
34
            self::SHIP_FIGHT => sprintf(
35
                'Die %s (%s) wurde in Sektor %s von der %s zerstört',
36
                $shipName,
37
                $rumpName,
38
                $sector,
39
                $destroyerName
40
            ),
41
            self::ALERT_RED => sprintf(
42
                '[b][color=red]Alarm-Rot:[/color][/b] %s',
43
                self::SHIP_FIGHT->getHistoryEntryText($destroyer, $destroyedShip),
44
            ),
45
            self::ESCAPE_TRACTOR => sprintf(
46
                'Die %s (%s) wurde bei einem Fluchtversuch in Sektor %s zerstört',
47
                $shipName,
48
                $rumpName,
49
                $sector
50
            ),
51
            self::SELF_DESTRUCTION => sprintf(
52
                _('Die %s (%s) hat sich in Sektor %s selbst zerstört'),
53
                $shipName,
54
                $rumpName,
55
                $sector
56
            ),
57
            self::THOLIAN_WEB_IMPLOSION => sprintf(
58
                'Die %s (%s) wurde in Sektor %s durch ein implodierendes Energienetz zerstört',
59
                $shipName,
60
                $rumpName,
61
                $sector
62
            ),
63
            self::ORPHANIZED_TRADEPOST => sprintf(
64
                'Der verlassene Handelsposten in Sektor %s ist zerfallen',
65
                $sector
66
            )
67
        };
68
    }
69
}
70