Passed
Push — master ( 55cfd1...cb4d54 )
by Nico
22:41
created

SystemLayerRenderer::getFieldImage()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 13
Code Lines 9

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 10
CRAP Score 2

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 9
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 13
ccs 10
cts 10
cp 1
crap 2
rs 9.9666
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Lib\Map\VisualPanel\Layer\Render;
6
7
use Stu\Lib\Map\VisualPanel\AbstractVisualPanel;
8
use Stu\Lib\Map\VisualPanel\Layer\Data\CellDataInterface;
9
use Stu\Lib\Map\VisualPanel\Layer\Data\MapData;
10
use Stu\Lib\Map\VisualPanel\Layer\PanelLayerEnum;
11
12
final class SystemLayerRenderer implements LayerRendererInterface
13
{
14
    private const ONLY_BACKGROUND_IMAGE = 1;
15
16
    /** @param MapData $data */
17 5
    public function render(CellDataInterface $data, AbstractVisualPanel $panel): string
18
    {
19 5
        return sprintf(
20 5
            '%s%s',
21 5
            $this->getBackgroundImage($data, $panel),
22 5
            $this->getFieldImage($data, $panel)
23 5
        );
24
    }
25
26 5
    private function getBackgroundImage(MapData $data, AbstractVisualPanel $panel): string
27
    {
28 5
        return sprintf(
29 5
            '<img src="/assets/map/starmap/%s.png"
30 5
                        style="z-index: %d; %s opacity:1;" />',
31 5
            $this->getSystemBackgroundId($data),
32 5
            PanelLayerEnum::BACKGROUND->value,
33 5
            $panel->getHeightAndWidth()
34 5
        );
35
    }
36
37 5
    private function getFieldImage(MapData $data, AbstractVisualPanel $panel): string
38
    {
39 5
        $fieldId = $this->getSystemFieldId($data);
40 5
        if ($fieldId === null) {
41 4
            return '';
42
        }
43
44 1
        return sprintf(
45 1
            '<img src="/assets/map/%d.png" class="lssSubspaceOverShield"
46 1
                style="z-index: %d; %s opacity:2;" />',
47 1
            $fieldId,
48 1
            PanelLayerEnum::SYSTEM->value,
49 1
            $panel->getHeightAndWidth()
50 1
        );
51
    }
52
53 5
    private function getSystemFieldId(MapData $data): ?int
54
    {
55 5
        if ($data->getMapfieldType() === self::ONLY_BACKGROUND_IMAGE) {
56 4
            return null;
57
        }
58
59 1
        return $data->getMapfieldType();
60
    }
61
62 5
    private function getSystemBackgroundId(MapData $data): string
63
    {
64 5
        return sprintf(
65 5
            '%02d%02d',
66 5
            $data->getPosY(),
67 5
            $data->getPosX()
68 5
        );
69
    }
70
}
71