Completed
Pull Request — master (#213)
by
unknown
04:49
created

CustomSmSpeedWidget::__construct()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 10
Code Lines 8

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2

Importance

Changes 0
Metric Value
dl 0
loc 10
ccs 0
cts 3
cp 0
rs 9.4285
c 0
b 0
f 0
cc 1
eloc 8
nc 1
nop 6
crap 2
1
<?php
2
3
namespace eXpansion\Bundle\CustomUi\Plugins\Gui;
4
5
use eXpansion\Framework\Core\Model\Gui\ManialinkInterface;
6
use eXpansion\Framework\Core\Model\Gui\Widget;
7
use eXpansion\Framework\Core\Model\Gui\WidgetFactoryContext;
8
use eXpansion\Framework\Core\Model\UserGroups\Group;
9
use eXpansion\Framework\Core\Plugins\Gui\WidgetFactory;
10
use FML\Controls\Frame;
11
use FML\Controls\Quad;
12
use FML\Script\ScriptLabel;
13
14
class CustomSmSpeedWidget extends WidgetFactory
15
{
16
17
    public function __construct(
18
        $name,
19
        $sizeX,
20
        $sizeY,
21
        $posX,
22
        $posY,
23
        WidgetFactoryContext $context
24
    ) {
25
        parent::__construct($name, $sizeX, $sizeY, $posX, $posY, $context);
26
    }
27
28
    /**
29
     * @inheritdoc
30
     */
31
    protected function createManialink(Group $group, $hideable = true)
32
    {
33
        return parent::createManialink($group, false);
34
    }
35
36
    /**
37
     * @param ManialinkInterface|Widget $manialink
38
     */
39
    protected function createContent(ManialinkInterface $manialink)
40
    {
41
        parent::createContent($manialink);
42
43
        $frame = Frame::create("Frame_Main");
44
        $frame->setScale(1);
45
        $manialink->addChild($frame);
46
47
        $lbl = $this->uiFactory->createLabel("100");
48
        $lbl->setPosition(2, 0)->setAlign("right", "center")
49
            ->setSize(20, 4)->setTextSize(3)->setTextFont("RajdhaniMono")->setId("Label_Speed");
50
        $frame->addChild($lbl);
51
52
        $lbl = $this->uiFactory->createLabel("km/h");
53
        $lbl->setPosition(5, 0)->setAlign("center", "center")
54
            ->setSize(5, 4)->setTextSize(1);
55
        $frame->addChild($lbl);
56
57
        $rpm1 = Frame::create();
58
        $rpm1->setSize(21, 42)->setAlign("right", "center");
59
        $quad = Quad::create();
60
        $quad->setSize(21, 42)->setAlign("right", "center")->setId("Quad_RPM1");
61
        $quad->setImageUrl('file://Media/MEDIABROWSER_HiddenResources/Common/Images/Ingame/NewSpeed-gauge1.dds');
62
        $quad->setColorize("fff")->setRotation(-180);
63
        $rpm1->addChild($quad);
64
        $frame->addChild($rpm1);
65
66
        $rpm2 = Frame::create();
67
        $rpm2->setSize(21, 42)->setAlign("left", "center");
68
        $quad = Quad::create();
69
        $quad->setSize(21, 42)->setAlign("right", "center")->setId("Quad_RPM2");
70
        $quad->setImageUrl('file://Media/MEDIABROWSER_HiddenResources/Common/Images/Ingame/NewSpeed-gauge1.dds');
71
        $quad->setColorize("fff")->setRotation(0);
72
        $rpm2->addChild($quad);
73
        $frame->addChild($rpm2);
74
75
76
        $manialink->getFmlManialink()->getScript()->addCustomScriptLabel(ScriptLabel::OnInit, <<<EOL
77
            declare CMlFrame Frame = (Page.GetFirstChild("Frame_Main") as CMlFrame);
78
            declare CMlQuad RPM1 = (Page.GetFirstChild("Quad_RPM1") as CMlQuad);
79
            declare CMlQuad RPM2 = (Page.GetFirstChild("Quad_RPM2") as CMlQuad);
80
            declare CMlLabel Speed = (Page.GetFirstChild("Label_Speed") as CMlLabel);                       
81
            declare CMlLabel Countdown = (Page.GetFirstChild("Label_Countdown") as CMlLabel);
82
            
83
            declare netread Integer Net_LibUI_SettingsUpdate for Teams[0];
84
            declare netread Text[Text] Net_LibUI_Settings for Teams[0];
85
  
86
            declare PrevSettingsUpdate = -1;
87
            declare CutOffTimeLimit = -1;                         
88
                                           
89
EOL
90
        );
91
92
        $manialink->getFmlManialink()->getScript()->addCustomScriptLabel(ScriptLabel::Loop,
93
            <<<EOL
94
            
95
           if (GUIPlayer != Null) {                    
96
                    Speed.Value = "" ^ MathLib::FloorInteger(GUIPlayer.Speed);
97
                    declare Real rpm = GUIPlayer.Speed / 100;
98
                    RPM1.RelativeRotation  = -180 + (MathLib::Clamp(rpm * 2. , 0., 1.) * 180);
99
                    RPM2.RelativeRotation  = (MathLib::Clamp((rpm -0.5)*2. ,0., 1.) * 180);               
100
           }
101
           
102
EOL
103
        );
104
105
    }
106
107
    protected function updateContent(ManialinkInterface $manialink)
108
    {
109
        parent::updateContent($manialink);
110
    }
111
112
113
}
114