Passed
Push — master ( f544cb...b3a3d9 )
by Nico
36:43 queued 09:10
created

ColonyMenuEnum::getMenuClass()   A

Complexity

Conditions 2
Paths 2

Size

Total Lines 7
Code Lines 3

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 6

Importance

Changes 1
Bugs 0 Features 0
Metric Value
cc 2
eloc 3
c 1
b 0
f 0
nc 2
nop 2
dl 0
loc 7
ccs 0
cts 4
cp 0
crap 6
rs 10
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Stu\Component\Colony;
6
7
use Stu\Component\Building\BuildingEnum;
8
use Stu\Module\Building\BuildingFunctionTypeEnum;
9
use Stu\Module\Colony\View\ShowAcademy\ShowAcademy;
10
use Stu\Module\Colony\View\ShowAirfield\ShowAirfield;
11
use Stu\Module\Colony\View\ShowBuildingManagement\ShowBuildingManagement;
12
use Stu\Module\Colony\View\ShowBuildMenu\ShowBuildMenu;
13
use Stu\Module\Colony\View\ShowBuildPlans\ShowBuildPlans;
14
use Stu\Module\Colony\View\ShowFighterShipyard\ShowFighterShipyard;
15
use Stu\Module\Colony\View\ShowManagement\ShowManagement;
16
use Stu\Module\Colony\View\ShowMisc\ShowMisc;
17
use Stu\Module\Colony\View\ShowModuleFab\ShowModuleFab;
18
use Stu\Module\Colony\View\ShowShipyard\ShowShipyard;
19
use Stu\Module\Colony\View\ShowSocial\ShowSocial;
20
use Stu\Module\Colony\View\ShowSubspaceTelescope\ShowSubspaceTelescope;
21
use Stu\Module\Colony\View\ShowTorpedoFab\ShowTorpedoFab;
22
use Stu\Module\Colony\View\ShowWaste\ShowWaste;
23
24
enum ColonyMenuEnum: int
25
{
26
    case MENU_BUILD = 1;
27
    case MENU_INFO = 2;
28
    case MENU_OPTION = 3;
29
    case MENU_SOCIAL = 4;
30
    case MENU_BUILDINGS = 5;
31
    case MENU_AIRFIELD = 6;
32
    case MENU_MODULEFAB = 7;
33
    case MENU_SHIPYARD = 8;
34
    case MENU_BUILDPLANS = 9;
35
    case MENU_FIGHTER_SHIPYARD = 10;
36
    case MENU_TORPEDOFAB = 11;
37
    case MENU_ACADEMY = 12;
38
    case MENU_WASTE = 13;
39
    case MENU_FAB_HALL = 14;
40
    case MENU_TECH_CENTER = 15;
41
    case MENU_SUBSPACE_TELESCOPE = 16;
42
43
    public static function getFor(mixed $value): ColonyMenuEnum
44
    {
45
        if ($value === null) {
46
            return ColonyMenuEnum::MENU_INFO;
47
        }
48
49
        if ($value instanceof self) {
50
            return $value;
51
        }
52
53
        return self::tryFrom($value) ?? ColonyMenuEnum::MENU_INFO;
54
    }
55
56
    public static function getMenuClass(ColonyMenuEnum $currentMenu, int $value): string
57
    {
58
        if ($currentMenu->value === $value) {
59
            return 'selected';
60
        }
61
62
        return "";
63
    }
64
65
66
    /** @return array<int>|null */
67
    public function getNeededBuildingFunction(): ?array
68
    {
69
        return match ($this) {
70
            self::MENU_BUILD => null,
71
            self::MENU_INFO => null,
72
            self::MENU_OPTION => null,
73
            self::MENU_SOCIAL => null,
74
            self::MENU_BUILDINGS => null,
75
            self::MENU_AIRFIELD => [BuildingEnum::BUILDING_FUNCTION_AIRFIELD],
76
            self::MENU_MODULEFAB => BuildingFunctionTypeEnum::getModuleFabOptions(),
77
            self::MENU_SHIPYARD => BuildingFunctionTypeEnum::getShipyardOptions(),
78
            self::MENU_BUILDPLANS => BuildingFunctionTypeEnum::getShipyardOptions(),
79
            self::MENU_FIGHTER_SHIPYARD => [BuildingEnum::BUILDING_FUNCTION_FIGHTER_SHIPYARD],
80
            self::MENU_TORPEDOFAB => [BuildingEnum::BUILDING_FUNCTION_TORPEDO_FAB],
81
            self::MENU_ACADEMY => [BuildingEnum::BUILDING_FUNCTION_ACADEMY],
82
            self::MENU_WASTE => [BuildingEnum::BUILDING_FUNCTION_WAREHOUSE],
83
            self::MENU_FAB_HALL => [BuildingEnum::BUILDING_FUNCTION_FABRICATION_HALL],
84
            self::MENU_TECH_CENTER => [BuildingEnum::BUILDING_FUNCTION_TECH_CENTER],
85
            self::MENU_SUBSPACE_TELESCOPE => [BuildingEnum::BUILDING_FUNCTION_SUBSPACE_TELESCOPE]
86
        };
87
    }
88
89
    public function getViewIdentifier(): string
90
    {
91
        return match ($this) {
92
            self::MENU_BUILD => ShowBuildMenu::VIEW_IDENTIFIER,
93
            self::MENU_INFO => ShowManagement::VIEW_IDENTIFIER,
94
            self::MENU_OPTION => ShowMisc::VIEW_IDENTIFIER,
95
            self::MENU_SOCIAL => ShowSocial::VIEW_IDENTIFIER,
96
            self::MENU_BUILDINGS => ShowBuildingManagement::VIEW_IDENTIFIER,
97
            self::MENU_AIRFIELD => ShowAirfield::VIEW_IDENTIFIER,
98
            self::MENU_MODULEFAB => ShowModuleFab::VIEW_IDENTIFIER,
99
            self::MENU_SHIPYARD => ShowShipyard::VIEW_IDENTIFIER,
100
            self::MENU_BUILDPLANS => ShowBuildPlans::VIEW_IDENTIFIER,
101
            self::MENU_FIGHTER_SHIPYARD => ShowFighterShipyard::VIEW_IDENTIFIER,
102
            self::MENU_TORPEDOFAB => ShowTorpedoFab::VIEW_IDENTIFIER,
103
            self::MENU_ACADEMY => ShowAcademy::VIEW_IDENTIFIER,
104
            self::MENU_WASTE => ShowWaste::VIEW_IDENTIFIER,
105
            self::MENU_FAB_HALL => ShowModuleFab::VIEW_IDENTIFIER,
106
            self::MENU_TECH_CENTER => ShowModuleFab::VIEW_IDENTIFIER,
107
            self::MENU_SUBSPACE_TELESCOPE => ShowSubspaceTelescope::VIEW_IDENTIFIER
108
        };
109
    }
110
111
    public function getTemplate(): string
112
    {
113
        return match ($this) {
114
            self::MENU_BUILD => 'html/colony/menu/buildmenues.twig',
115
            self::MENU_INFO => 'html/colony/menu/management.twig',
116
            self::MENU_OPTION => 'html/colony/menu/miscellaneous.twig',
117
            self::MENU_SOCIAL => 'html/colony/menu/social.twig',
118
            self::MENU_BUILDINGS => 'html/colony/menu/buildingManagement.twig',
119
            self::MENU_AIRFIELD => 'html/colony/menu/airfield.twig',
120
            self::MENU_MODULEFAB => 'html/colony/menu/moduleFab.twig',
121
            self::MENU_SHIPYARD => 'html/colony/menu/shipyard.twig',
122
            self::MENU_BUILDPLANS => 'html/colony/menu/shipBuildplans.twig',
123
            self::MENU_FIGHTER_SHIPYARD => 'html/colony/menu/fighterShipyard.twig',
124
            self::MENU_TORPEDOFAB => 'html/colony/menu/torpedoFab.twig',
125
            self::MENU_ACADEMY => 'html/colony/menu/academy.twig',
126
            self::MENU_WASTE => 'html/colony/menu/waste.twig',
127
            self::MENU_FAB_HALL => 'html/colony/menu/moduleFab.twig',
128
            self::MENU_TECH_CENTER => 'html/colony/menu/moduleFab.twig',
129
            self::MENU_SUBSPACE_TELESCOPE => 'html/colony/menu/telescope.twig'
130
        };
131
    }
132
}
133