Passed
Push — master ( 0ac6a9...434e9a )
by Nico
16:38 queued 10:37
created

ManagerProviderSpacecraft::getReactorLoad()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 4
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 2
nc 2
nop 0
dl 0
loc 4
ccs 0
cts 3
cp 0
crap 6
rs 10
c 1
b 0
f 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Lib\SpacecraftManagement\Provider;
6
7
use BadMethodCallException;
8
use Doctrine\Common\Collections\Collection;
9
use Stu\Module\Spacecraft\Lib\SpacecraftWrapperInterface;
10
use Stu\Orm\Entity\Commodity;
11
use Stu\Orm\Entity\Spacecraft;
12
use Stu\Orm\Entity\User;
13
14
class ManagerProviderSpacecraft implements ManagerProviderInterface
15
{
16
    public function __construct(
17
        private SpacecraftWrapperInterface $wrapper
18
    ) {}
19
20
    #[\Override]
21
    public function getUser(): User
22
    {
23
        return $this->wrapper->get()->getUser();
24
    }
25
26
    #[\Override]
27
    public function getEps(): int
28
    {
29
        return 0;
30
    }
31
32
    #[\Override]
33
    public function lowerEps(int $amount): ManagerProviderInterface
34
    {
35
        throw new BadMethodCallException('spacecraft can not lower eps for transfer');
36
    }
37
38
    #[\Override]
39
    public function getName(): string
40
    {
41
        $spacecraft = $this->wrapper->get();
42
43
        return sprintf(
44
            '%s',
45
            $spacecraft->getName(),
46
        );
47
    }
48
49
    #[\Override]
50
    public function getSectorString(): string
51
    {
52
        return $this->wrapper->get()->getSectorString();
53
    }
54
55
    #[\Override]
56
    public function getFreeCrewAmount(): int
57
    {
58
        return 0;
59
    }
60
61
    #[\Override]
62
    public function addCrewAssignment(Spacecraft $spacecraft, int $amount): void
63
    {
64
        throw new BadMethodCallException('spacecraft can not add crew for transfer');
65
    }
66
67
    #[\Override]
68
    public function getFreeCrewStorage(): int
69
    {
70
        return 0;
71
    }
72
73
    #[\Override]
74
    public function addCrewAssignments(array $crewAssignments): void
75
    {
76
        throw new BadMethodCallException('spacecraft can not add crew for transfer');
77
    }
78
79
    #[\Override]
80
    public function getStorage(): Collection
81
    {
82
        return $this->wrapper->get()->getStorage();
83
    }
84
85
    #[\Override]
86
    public function upperStorage(Commodity $commodity, int $amount): void
87
    {
88
        throw new BadMethodCallException('spacecraft can not upper storage for transfer');
89
    }
90
91
    #[\Override]
92
    public function lowerStorage(Commodity $commodity, int $amount): void
93
    {
94
        throw new BadMethodCallException('spacecraft can not lower storage for transfer');
95
    }
96
97
    public function getReactorLoad(): int
98
    {
99
        $reactor = $this->wrapper->getReactorWrapper();
100
        return $reactor ? $reactor->getLoad() : 0;
101
    }
102
103
    public function lowerReactorLoad(int $amount): void
104
    {
105
        $reactor = $this->wrapper->getReactorWrapper();
106
        if ($reactor === null) {
107
            throw new BadMethodCallException('spacecraft has no reactor');
108
        }
109
110
        $reactor->changeLoad(-$amount);
111
    }
112
113
    public function getWrapper(): SpacecraftWrapperInterface
114
    {
115
        return $this->wrapper;
116
    }
117
}
118