Passed
Push — master ( 288b46...98b0e3 )
by Nico
31:30 queued 08:00
created

reachedDestinationDestroyed()   B

Complexity

Conditions 9
Paths 16

Size

Total Lines 62
Code Lines 41

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 90

Importance

Changes 0
Metric Value
cc 9
eloc 41
c 0
b 0
f 0
nc 16
nop 5
dl 0
loc 62
ccs 0
cts 46
cp 0
crap 90
rs 7.7084

How to fix   Long Method   

Long Method

Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.

For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.

Commonly applied refactorings include:

1
<?php
2
3
namespace Stu\Module\Ship\Lib\Movement;
4
5
use InvalidArgumentException;
6
use Stu\Module\Ship\Lib\Message\Message;
7
use Stu\Module\Ship\Lib\Message\MessageCollectionInterface;
8
use Stu\Module\Ship\Lib\Movement\Route\RouteModeEnum;
9
use Stu\Orm\Entity\ShipInterface;
10
11
//TODO unit tests
12
final class ShipMovementInformationAdder implements ShipMovementInformationAdderInterface
13
{
14
    public function reachedDestination(
15
        ShipInterface $ship,
16
        bool $isFleetMode,
17
        int $routeMode,
18
        MessageCollectionInterface $messages
19
    ): void {
20
21
        $name = $isFleetMode ? 'Flotte' : $ship->getName();
22
23
        $message = new Message();
24
        $messages->add($message);
25
26
        switch ($routeMode) {
27
            case RouteModeEnum::ROUTE_MODE_FLIGHT:
28
                $message->add(sprintf(
29
                    _('Die %s fliegt in Sektor %s ein'),
30
                    $name,
31
                    $ship->getSectorString()
32
                ));
33
                break;
34
            case RouteModeEnum::ROUTE_MODE_SYSTEM_ENTRY:
35
                $system = $ship->getSystem();
36
37
                if ($system === null) {
38
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
39
                }
40
41
                $message->add(sprintf(
42
                    _('Die %s fliegt in das %s-System ein'),
43
                    $name,
44
                    $system->getName()
45
                ));
46
                break;
47
            case RouteModeEnum::ROUTE_MODE_SYSTEM_EXIT:
48
                $message->add(sprintf(
49
                    _('Die %s hat das Sternsystem verlassen'),
50
                    $name,
51
                ));
52
                break;
53
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_ENTRY:
54
                $system = $ship->getSystem();
55
56
                if ($system === null) {
57
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
58
                }
59
60
                $message->add(sprintf(
61
                    _('Die %s fliegt in das %s ein'),
62
                    $name,
63
                    $system->getName()
64
                ));
65
                break;
66
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_EXIT:
67
                $message->add($isFleetMode ? 'Die Flotte hat das Wurmloch verlassen' : 'Das Wurmloch wurde verlassen');
68
                break;
69
            default:
70
                throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
71
        }
72
    }
73
74
    public function reachedDestinationDestroyed(
75
        ShipInterface $ship,
76
        string $leadShipName,
77
        bool $isFleetMode,
78
        int $routeMode,
79
        MessageCollectionInterface $messages
80
    ): void {
81
82
        $name = $isFleetMode ? 'gesamte Flotte' : $leadShipName;
83
84
        $message = new Message();
85
        $messages->add($message);
86
87
        switch ($routeMode) {
88
            case RouteModeEnum::ROUTE_MODE_FLIGHT:
89
                $message->add(sprintf(
90
                    _('Beim Einflug in Sektor %s wurde die %s zerstört'),
91
                    $ship->getSectorString(),
92
                    $name
93
                ));
94
                break;
95
            case RouteModeEnum::ROUTE_MODE_SYSTEM_ENTRY:
96
                $system = $ship->getSystem();
97
98
                if ($system === null) {
99
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
100
                }
101
102
                $message->add(sprintf(
103
                    _('Beim Einflug in das %s-System wurde die %s zerstört'),
104
                    $system->getName(),
105
                    $name
106
                ));
107
                break;
108
            case RouteModeEnum::ROUTE_MODE_SYSTEM_EXIT:
109
                $message->add(sprintf(
110
                    _('Beim Verlassen des Sternsystem wurde die %s zerstört'),
111
                    $name
112
                ));
113
                break;
114
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_ENTRY:
115
                $system = $ship->getSystem();
116
117
                if ($system === null) {
118
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
119
                }
120
                $message->add(sprintf(
121
                    _('Beim Einflug in das %s wurde die %s zerstört'),
122
                    $system->getName(),
123
                    $name
124
                ));
125
                break;
126
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_EXIT:
127
                $message->add(
128
                    sprintf(
129
                        _('Beim Verlassen des Wurmlochs wurde die %s zerstört'),
130
                        $name
131
                    )
132
                );
133
                break;
134
            default:
135
                throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
136
        }
137
    }
138
139
    public function pulledTractoredShip(
140
        ShipInterface $ship,
141
        ShipInterface $tractoredShip,
142
        int $routeMode,
143
        MessageCollectionInterface $messages
144
    ): void {
145
        $tractoredShipName = $tractoredShip->getName();
146
147
        $message = new Message(
148
            $ship->getUser()->getId(),
149
            $tractoredShip->getUser()->getId()
150
        );
151
        $messages->add($message);
152
153
        $sectorString = $ship->getSectorString();
154
155
        switch ($routeMode) {
156
            case RouteModeEnum::ROUTE_MODE_FLIGHT:
157
                $message->add(sprintf(
158
                    _('Die %s wurde via Traktorstrahl bis %s mitgezogen'),
159
                    $tractoredShipName,
160
                    $sectorString
161
                ));
162
                break;
163
            case RouteModeEnum::ROUTE_MODE_SYSTEM_ENTRY:
164
                $message->add(sprintf(_('Die %s wurde mit in das System gezogen'), $tractoredShipName));
165
                break;
166
            case RouteModeEnum::ROUTE_MODE_SYSTEM_EXIT:
167
                $message->add(sprintf(_('Die %s wurde mit aus dem System gezogen'), $tractoredShipName));
168
                break;
169
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_ENTRY:
170
                $message->add(sprintf(_('Die %s wurde mit in das Wurmloch gezogen'), $tractoredShipName));
171
                break;
172
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_EXIT:
173
                $message->add(sprintf(_('Die %s wurde mit aus dem Wurmloch gezogen'), $tractoredShipName));
174
                break;
175
            default:
176
                throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
177
        }
178
    }
179
}
180