Passed
Push — dev ( 5b1d95...923b08 )
by Janko
23:33 queued 07:31
created

SystemDeactivationHandler::handleSpacecraftTick()   A

Complexity

Conditions 4
Paths 4

Size

Total Lines 17
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 20

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 4
eloc 8
c 1
b 0
f 0
nc 4
nop 2
dl 0
loc 17
ccs 0
cts 8
cp 0
crap 20
rs 10
1
<?php
2
3
namespace Stu\Module\Tick\Spacecraft\Handler;
4
5
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...
6
use Stu\Component\Spacecraft\System\SpacecraftSystemManagerInterface;
7
use Stu\Component\Spacecraft\System\SpacecraftSystemTypeEnum;
8
use Stu\Lib\Information\InformationInterface;
9
use Stu\Module\Spacecraft\Lib\SpacecraftWrapperInterface;
10
11
class SystemDeactivationHandler implements SpacecraftTickHandlerInterface
12
{
13 1
    public function __construct(
14
        private SpacecraftSystemManagerInterface $spacecraftSystemManager
15 1
    ) {}
16
17
    #[Override]
18
    public function handleSpacecraftTick(
19
        SpacecraftWrapperInterface $wrapper,
20
        InformationInterface $information
21
    ): void {
22
23
        $spacecraft = $wrapper->get();
24
        $hasEnoughCrew = $spacecraft->hasEnoughCrew();
25
26
        // not enough crew
27
        if (!$hasEnoughCrew) {
28
            $information->addInformation('Zu wenig Crew an Bord, Schiff ist nicht voll funktionsfähig! Systeme werden deaktiviert!');
29
30
            //deactivate all systems except life support
31
            foreach ($this->spacecraftSystemManager->getActiveSystems($spacecraft) as $system) {
32
                if ($system->getSystemType() != SpacecraftSystemTypeEnum::LIFE_SUPPORT) {
33
                    $this->spacecraftSystemManager->deactivate($wrapper, $system->getSystemType(), true);
34
                }
35
            }
36
        }
37
    }
38
}
39