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

SystemLayerRenderer   A

Complexity

Total Complexity 7

Size/Duplication

Total Lines 56
Duplicated Lines 0 %

Test Coverage

Coverage 100%

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 28
c 1
b 0
f 0
dl 0
loc 56
ccs 34
cts 34
cp 1
rs 10
wmc 7

5 Methods

Rating   Name   Duplication   Size   Complexity  
A getSystemBackgroundId() 0 6 1
A render() 0 6 1
A getFieldImage() 0 13 2
A getBackgroundImage() 0 8 1
A getSystemFieldId() 0 7 2
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