Passed
Push — master ( 37217b...efdda9 )
by Nico
19:16 queued 09:28
created

ShowMapEditor::handle()   B

Complexity

Conditions 6
Paths 14

Size

Total Lines 42
Code Lines 26

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 42

Importance

Changes 0
Metric Value
cc 6
eloc 26
c 0
b 0
f 0
nc 14
nop 1
dl 0
loc 42
ccs 0
cts 27
cp 0
crap 42
rs 8.8817
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Module\Admin\View\Map;
6
7
use request;
8
use Stu\Component\Map\MapEnum;
9
use Stu\Module\Control\GameControllerInterface;
10
use Stu\Module\Control\ViewControllerInterface;
11
use Stu\Orm\Repository\LayerRepositoryInterface;
12
use Stu\Orm\Repository\StarSystemRepositoryInterface;
13
14
final class ShowMapEditor implements ViewControllerInterface
15
{
16
    public const VIEW_IDENTIFIER = 'SHOW_MAP_EDITOR';
17
18
    private LayerRepositoryInterface $layerRepository;
19
20
    private StarSystemRepositoryInterface $starSystemRepository;
21
22
    public function __construct(
23
        LayerRepositoryInterface $layerRepository,
24
        StarSystemRepositoryInterface $starSystemRepository
25
    ) {
26
        $this->layerRepository = $layerRepository;
27
        $this->starSystemRepository = $starSystemRepository;
28
    }
29
30
    public function handle(GameControllerInterface $game): void
31
    {
32
        $game->setTemplateFile('html/admin/mapeditor_overview.twig', true);
33
        $game->appendNavigationPart('/admin/?SHOW_MAP_EDITOR=1', _('Karteneditor'));
34
        $game->setPageTitle(_('Karteneditor'));
35
36
        //LAYER
37
        $layers = $this->layerRepository->findAllIndexed();
38
39
        $layerId = request::getInt('layerid');
40
        $layer = $layerId === 0 ? current($layers) : $layers[$layerId];
41
42
        if ($layer === false) {
43
            return;
44
        }
45
46
        //HEADROW
47
        $xHeadRow = [];
48
        for ($j = 1; $j <= (int)ceil($layer->getWidth() / MapEnum::FIELDS_PER_SECTION); $j++) {
49
            $xHeadRow[] = $j;
50
        }
51
52
        //SECTIONS
53
        $sections = [];
54
        $k = 1;
55
        for ($i = 1; $i <= (int)ceil($layer->getHeight() / MapEnum::FIELDS_PER_SECTION); $i++) {
56
            for ($j = 1; $j <= (int)ceil($layer->getWidth() / MapEnum::FIELDS_PER_SECTION); $j++) {
57
                $sections[$i][$j] = $k;
58
                $k++;
59
            }
60
        }
61
62
        $systemList = $this->starSystemRepository->getByLayer($layer->getId());
63
        $numberOfSystemsToGenerate = $this->starSystemRepository->getNumberOfSystemsToGenerate($layer);
64
65
        $game->setTemplateVar('LAYERID', $layer->getId());
66
        $game->setTemplateVar('LAYERS', $layers);
67
        $game->setTemplateVar('X_HEAD_ROW', $xHeadRow);
68
        $game->setTemplateVar('SECTIONS', $sections);
69
        $game->setTemplateVar('FIELDS_PER_SECTION', MapEnum::FIELDS_PER_SECTION);
70
        $game->setTemplateVar('SYSTEM_LIST', $systemList);
71
        $game->setTemplateVar('NUMBER_OF_SYSTEMS_TO_GENERATE', $numberOfSystemsToGenerate);
72
    }
73
}
74