Passed
Pull Request — master (#1969)
by Janko
22:34 queued 10:03
created

ShipMovementInformationAdder::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 1
Code Lines 0

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 1
CRAP Score 1

Importance

Changes 0
Metric Value
cc 1
eloc 0
nc 1
nop 1
dl 0
loc 1
ccs 1
cts 1
cp 1
crap 1
rs 10
c 0
b 0
f 0
1
<?php
2
3
namespace Stu\Module\Spacecraft\Lib\Movement;
4
5
use InvalidArgumentException;
6
use Override;
0 ignored issues
show
Bug introduced by
The type Override was not found. Maybe you did not declare it correctly or list all dependencies?

The issue could also be caused by a filter entry in the build configuration. If the path has been excluded in your configuration, e.g. excluded_paths: ["lib/*"], you can move it to the dependency path list as follows:

filter:
    dependency_paths: ["lib/*"]

For further information see https://scrutinizer-ci.com/docs/tools/php/php-scrutinizer/#list-dependency-paths

Loading history...
7
use Stu\Module\Spacecraft\Lib\Message\MessageCollectionInterface;
8
use Stu\Module\Spacecraft\Lib\Message\MessageFactoryInterface;
9
use Stu\Module\Spacecraft\Lib\Movement\Route\RouteModeEnum;
10
use Stu\Orm\Entity\ShipInterface;
11
use Stu\Orm\Entity\SpacecraftInterface;
12
13
//TODO unit tests
14
final class ShipMovementInformationAdder implements ShipMovementInformationAdderInterface
15
{
16 1
    public function __construct(private MessageFactoryInterface $messageFactory) {}
17
18
    #[Override]
19
    public function reachedDestination(
20
        SpacecraftInterface $spacecraft,
21
        bool $isFleetMode,
22
        RouteModeEnum $routeMode,
23
        MessageCollectionInterface $messages
24
    ): void {
25
26
        $name = $isFleetMode ? 'Flotte' : $spacecraft->getName();
27
        $routeModeValue = $routeMode->value;
28
29
        $message = $this->messageFactory->createMessage();
30
        $messages->add($message);
31
32
        switch ($routeMode) {
33
            case RouteModeEnum::ROUTE_MODE_FLIGHT:
34
                $message->add(sprintf(
35
                    _('Die %s fliegt in Sektor %s ein'),
36
                    $name,
37
                    $spacecraft->getSectorString()
38
                ));
39
                break;
40
            case RouteModeEnum::ROUTE_MODE_SYSTEM_ENTRY:
41
                $system = $spacecraft->getSystem();
42
43
                if ($system === null) {
44
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeModeValue));
45
                }
46
47
                $message->add(sprintf(
48
                    _('Die %s fliegt in das %s-System ein'),
49
                    $name,
50
                    $system->getName()
51
                ));
52
                break;
53
            case RouteModeEnum::ROUTE_MODE_SYSTEM_EXIT:
54
                $message->add(sprintf(
55
                    _('Die %s hat das Sternsystem verlassen'),
56
                    $name,
57
                ));
58
                break;
59
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_ENTRY:
60
                $system = $spacecraft->getSystem();
61
62
                if ($system === null) {
63
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeModeValue));
64
                }
65
66
                $message->add(sprintf(
67
                    _('Die %s fliegt in das %s ein'),
68
                    $name,
69
                    $system->getName()
70
                ));
71
                break;
72
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_EXIT:
73
                $message->add($isFleetMode ? 'Die Flotte hat das Wurmloch verlassen' : 'Das Wurmloch wurde verlassen');
74
                break;
75
            case RouteModeEnum::ROUTE_MODE_TRANSWARP:
76
                $message->add(sprintf(
77
                    _('Die %s verlässt den Transwarpkanal in Sektor %s'),
78
                    $name,
79
                    $spacecraft->getSectorString()
80
                ));
81
                break;
82
            default:
83
                throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode));
0 ignored issues
show
Bug introduced by
$routeMode of type Stu\Module\Spacecraft\Li...ent\Route\RouteModeEnum is incompatible with the type double|integer|string expected by parameter $values of sprintf(). ( Ignorable by Annotation )

If this is a false-positive, you can also ignore this issue in your code via the ignore-type  annotation

83
                throw new InvalidArgumentException(sprintf('route mode %d does not exist', /** @scrutinizer ignore-type */ $routeMode));
Loading history...
84
        }
85
    }
86
87
    #[Override]
88
    public function reachedDestinationDestroyed(
89
        SpacecraftInterface $spacecraft,
90
        string $leadShipName,
91
        bool $isFleetMode,
92
        RouteModeEnum $routeMode,
93
        MessageCollectionInterface $messages
94
    ): void {
95
96
        $name = $isFleetMode ? 'gesamte Flotte' : $leadShipName;
97
        $routeModeValue = $routeMode->value;
98
99
        $message = $this->messageFactory->createMessage();
100
        $messages->add($message);
101
102
        switch ($routeMode) {
103
            case RouteModeEnum::ROUTE_MODE_FLIGHT:
104
                $message->add(sprintf(
105
                    _('Beim Einflug in Sektor %s wurde die %s zerstört'),
106
                    $spacecraft->getSectorString(),
107
                    $name
108
                ));
109
                break;
110
            case RouteModeEnum::ROUTE_MODE_SYSTEM_ENTRY:
111
                $system = $spacecraft->getSystem();
112
113
                if ($system === null) {
114
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeModeValue));
115
                }
116
117
                $message->add(sprintf(
118
                    _('Beim Einflug in das %s-System wurde die %s zerstört'),
119
                    $system->getName(),
120
                    $name
121
                ));
122
                break;
123
            case RouteModeEnum::ROUTE_MODE_SYSTEM_EXIT:
124
                $message->add(sprintf(
125
                    _('Beim Verlassen des Sternsystem wurde die %s zerstört'),
126
                    $name
127
                ));
128
                break;
129
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_ENTRY:
130
                $system = $spacecraft->getSystem();
131
132
                if ($system === null) {
133
                    throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeModeValue));
134
                }
135
                $message->add(sprintf(
136
                    _('Beim Einflug in das %s wurde die %s zerstört'),
137
                    $system->getName(),
138
                    $name
139
                ));
140
                break;
141
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_EXIT:
142
                $message->add(
143
                    sprintf(
144
                        _('Beim Verlassen des Wurmlochs wurde die %s zerstört'),
145
                        $name
146
                    )
147
                );
148
                break;
149
            case RouteModeEnum::ROUTE_MODE_TRANSWARP:
150
                $message->add(
151
                    sprintf(
152
                        _('Beim Verlassen des Transwarpkanals wurde die %s zerstört'),
153
                        $name
154
                    )
155
                );
156
                break;
157
            default:
158
                throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeModeValue));
159
        }
160
    }
161
162
    #[Override]
163
    public function pulledTractoredShip(
164
        SpacecraftInterface $spacecraft,
165
        ShipInterface $tractoredShip,
166
        RouteModeEnum $routeMode,
167
        MessageCollectionInterface $messages
168
    ): void {
169
        $tractoredShipName = $tractoredShip->getName();
170
171
        $message = $this->messageFactory->createMessage(
172
            $spacecraft->getUser()->getId(),
173
            $tractoredShip->getUser()->getId()
174
        );
175
        $messages->add($message);
176
177
        $sectorString = $spacecraft->getSectorString();
178
179
        switch ($routeMode) {
180
            case RouteModeEnum::ROUTE_MODE_FLIGHT:
181
                $message->add(sprintf(
182
                    _('Die %s wurde via Traktorstrahl bis %s mitgezogen'),
183
                    $tractoredShipName,
184
                    $sectorString
185
                ));
186
                break;
187
            case RouteModeEnum::ROUTE_MODE_SYSTEM_ENTRY:
188
                $message->add(sprintf(_('Die %s wurde mit in das System gezogen'), $tractoredShipName));
189
                break;
190
            case RouteModeEnum::ROUTE_MODE_SYSTEM_EXIT:
191
                $message->add(sprintf(_('Die %s wurde mit aus dem System gezogen'), $tractoredShipName));
192
                break;
193
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_ENTRY:
194
                $message->add(sprintf(_('Die %s wurde mit in das Wurmloch gezogen'), $tractoredShipName));
195
                break;
196
            case RouteModeEnum::ROUTE_MODE_WORMHOLE_EXIT:
197
                $message->add(sprintf(_('Die %s wurde mit aus dem Wurmloch gezogen'), $tractoredShipName));
198
                break;
199
            default:
200
                throw new InvalidArgumentException(sprintf('route mode %d does not exist', $routeMode->value));
201
        }
202
    }
203
}
204